From c6d3bce7047dbcbe10a3a7c642f98ec28ae278a4 Mon Sep 17 00:00:00 2001 From: vladest Date: Sun, 10 Sep 2017 18:33:04 +0200 Subject: [PATCH 001/329] Switch off Flickable --- .../qml/controls/FlickableWebViewCore.qml | 77 +++++++++++++------ interface/src/main.cpp | 2 + interface/src/ui/overlays/Web3DOverlay.cpp | 8 +- scripts/system/edit.js | 1 + 4 files changed, 59 insertions(+), 29 deletions(-) diff --git a/interface/resources/qml/controls/FlickableWebViewCore.qml b/interface/resources/qml/controls/FlickableWebViewCore.qml index 0460b5b16a..7d52db5034 100644 --- a/interface/resources/qml/controls/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/FlickableWebViewCore.qml @@ -14,25 +14,28 @@ Flickable { property alias webViewCore: _webview property alias webViewCoreProfile: _webview.profile + interactive: true property string userScriptUrl: "" property string urlTag: "noDownload=false"; signal newViewRequestedCallback(var request) signal loadingChangedCallback(var loadRequest) + property real previousHeight: height + boundsBehavior: Flickable.StopAtBounds StylesUIt.HifiConstants { id: hifi } - onHeightChanged: { - if (height > 0) { - //reload page since window dimentions changed, - //so web engine should recalculate page render dimentions - reloadTimer.start() - } - } +// onHeightChanged: { +// if (height > 0) { +// //reload page since window dimentions changed, +// //so web engine should recalculate page render dimentions +// reloadTimer.start() +// } +// } ScrollBar.vertical: ScrollBar { id: scrollBar @@ -48,8 +51,8 @@ Flickable { function onLoadingChanged(loadRequest) { if (WebEngineView.LoadStartedStatus === loadRequest.status) { - flick.contentWidth = flick.width - flick.contentHeight = flick.height +// flick.contentWidth = flick.width +// flick.contentHeight = flick.height // Required to support clicking on "hifi://" links var url = loadRequest.url.toString(); @@ -58,24 +61,47 @@ Flickable { _webview.stop(); } } + heightTimer.stop() } if (WebEngineView.LoadFailedStatus === loadRequest.status) { console.log(" Tablet WebEngineView failed to load url: " + loadRequest.url.toString()); + heightTimer.stop() } if (WebEngineView.LoadSucceededStatus === loadRequest.status) { //disable Chromium's scroll bars - _webview.runJavaScript("document.body.style.overflow = 'hidden';"); - //calculate page height - _webview.runJavaScript("document.body.scrollHeight;", function (i_actualPageHeight) { - if (i_actualPageHeight !== undefined) { - flick.contentHeight = i_actualPageHeight - } else { - flick.contentHeight = flick.height; - } - }) - flick.contentWidth = flick.width +// _webview.runJavaScript("document.body.style.overflow = 'hidden';"); +// //calculate page height +// _webview.runJavaScript("document.body.scrollHeight;", function (i_actualPageHeight) { +// if (i_actualPageHeight !== undefined) { +// flick.contentHeight = i_actualPageHeight +// } else { +// flick.contentHeight = flick.height; +// } +// }) +// previousHeight = flick.contentHeight +// flick.contentWidth = flick.width +// heightTimer.restart() + } + } + + Timer { + id: heightTimer + interval: 100 + repeat: true + onTriggered: { +// _webview.runJavaScript("document.body.scrollHeight;", function (i_actualPageHeight) { +// if (i_actualPageHeight !== undefined) { +// var newheight = i_actualPageHeight +// if (newheight > 0 && newheight !== previousHeight) { +// previousHeight = newheight +// flick.contentHeight = previousHeight; +// _webview.height = newheight < flick.height ? newheight : flick.height +// console.log("new height", previousHeight) +// } +// } +// }) } } @@ -84,14 +110,15 @@ Flickable { interval: 100 repeat: false onTriggered: { - _webview.reload() + //_webview.reload() } } WebEngineView { id: _webview - height: parent.height + anchors.fill: parent + //height: parent.height profile: HFWebEngineProfile; @@ -139,10 +166,10 @@ Flickable { grantFeaturePermission(securityOrigin, feature, true); } - onContentsSizeChanged: { - flick.contentHeight = Math.max(contentsSize.height, flick.height); - flick.contentWidth = flick.width - } +// onContentsSizeChanged: { +// //flick.contentHeight = Math.max(contentsSize.height, flick.height); +// //flick.contentWidth = flick.width +// } //disable popup onContextMenuRequested: { request.accepted = true; diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 503daa177d..b1373832ea 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -219,6 +219,8 @@ int main(int argc, const char* argv[]) { // Extend argv to enable WebGL rendering std::vector argvExtended(&argv[0], &argv[argc]); argvExtended.push_back("--ignore-gpu-blacklist"); + argvExtended.push_back("--enable-embedded-switches"); + argvExtended.push_back("--disable-overlay-scrollbar"); int argcExtended = (int)argvExtended.size(); Application app(argcExtended, const_cast(argvExtended.data()), startupTime, runningMarkerExisted); diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 104082dee4..b50ac9d7cf 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -367,11 +367,11 @@ void Web3DOverlay::setProxyWindow(QWindow* proxyWindow) { } void Web3DOverlay::handlePointerEvent(const PointerEvent& event) { - if (_inputMode == Touch) { + //if (_inputMode == Touch) { handlePointerEventAsTouch(event); - } else { - handlePointerEventAsMouse(event); - } +// } else { +// handlePointerEventAsMouse(event); +// } } void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 8b61226235..1370b6109c 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1929,6 +1929,7 @@ var PropertiesTool = function (opts) { data.properties.keyLight.direction.y * DEGREES_TO_RADIANS ); } + print("data properties " + data.properties) Entities.editEntity(selectionManager.selections[0], data.properties); if (data.properties.name !== undefined || data.properties.modelURL !== undefined || data.properties.visible !== undefined || data.properties.locked !== undefined) { From e60bd1d6b36c5e0c3b27e8fb560797c1a2d905b1 Mon Sep 17 00:00:00 2001 From: vladest Date: Mon, 11 Sep 2017 19:14:43 +0200 Subject: [PATCH 002/329] SOme stupid experiments --- interface/CMakeLists.txt | 3 + interface/src/Application.cpp | 247 +++++++++++++++++++++ interface/src/Application.h | 20 ++ interface/src/ui/overlays/Web3DOverlay.cpp | 38 +++- 4 files changed, 303 insertions(+), 5 deletions(-) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 43e50c6d33..41c7a4d8a4 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -17,6 +17,9 @@ endforeach() find_package(Qt5LinguistTools REQUIRED) find_package(Qt5LinguistToolsMacros) +find_package(Qt5Gui) +include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS}) + if (WIN32) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -bigobj") add_definitions(-D_USE_MATH_DEFINES) # apparently needed to get M_PI and other defines from cmath/math.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 3650c495f2..956ace7a28 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -281,6 +281,34 @@ private: Q_LOGGING_CATEGORY(trace_app_input_mouse, "trace.app.input.mouse") +namespace utils { +inline bool isTouchEvent(const QEvent* event) +{ + switch (event->type()) { + case QEvent::TouchBegin: + case QEvent::TouchUpdate: + case QEvent::TouchEnd: + return true; + default: + return false; + } +} + +inline bool isMouseEvent(const QEvent* event) +{ + switch (event->type()) { + case QEvent::MouseButtonPress: + case QEvent::MouseMove: + case QEvent::MouseButtonRelease: + case QEvent::MouseButtonDblClick: + return true; + default: + return false; + } +} + +} + using namespace std; static QTimer locationUpdateTimer; @@ -3063,9 +3091,228 @@ bool Application::eventFilter(QObject* object, QEvent* event) { } } + // We try to be smart, if we received real touch event, we are probably on a device + // with touch screen, and we should not have touch mocking. + + if (!event->spontaneous() || m_realTouchEventReceived) + return false; + + if (utils::isTouchEvent(event)) { + if (m_pendingFakeTouchEventCount) + --m_pendingFakeTouchEventCount; + else + m_realTouchEventReceived = true; + return false; + } + + QQuickWindow* window = qobject_cast(object); + if (!window) { + return false; + } + + m_holdingControl = QGuiApplication::keyboardModifiers().testFlag(Qt::ControlModifier); + + if (event->type() == QEvent::KeyRelease && static_cast(event)->key() == Qt::Key_Control) { + foreach (int id, m_heldTouchPoints) + if (m_touchPoints.contains(id) && !QGuiApplication::mouseButtons().testFlag(Qt::MouseButton(id))) { + m_touchPoints[id].setState(Qt::TouchPointReleased); + m_heldTouchPoints.remove(id); + } else + m_touchPoints[id].setState(Qt::TouchPointStationary); + sendTouchEvent(window, m_heldTouchPoints.isEmpty() ? QEvent::TouchEnd : QEvent::TouchUpdate, static_cast(event)->timestamp()); + } + + if (utils::isMouseEvent(event)) { + const QMouseEvent* const mouseEvent = static_cast(event); + + QTouchEvent::TouchPoint touchPoint; + touchPoint.setPressure(1); + + QEvent::Type touchType = QEvent::None; + + switch (mouseEvent->type()) { + case QEvent::MouseButtonPress: + touchPoint.setId(mouseEvent->button()); + if (m_touchPoints.contains(touchPoint.id())) { + touchPoint.setState(Qt::TouchPointMoved); + touchType = QEvent::TouchUpdate; + } else { + touchPoint.setState(Qt::TouchPointPressed); + // Check if more buttons are held down than just the event triggering one. + if (mouseEvent->buttons() > mouseEvent->button()) + touchType = QEvent::TouchUpdate; + else + touchType = QEvent::TouchBegin; + } + break; + case QEvent::MouseMove: + if (!mouseEvent->buttons()) { + // We have to swallow the event instead of propagating it, + // since we avoid sending the mouse release events and if the + // Flickable is the mouse grabber it would receive the event + // and would move the content. + event->accept(); + return true; + } + touchType = QEvent::TouchUpdate; + touchPoint.setId(mouseEvent->buttons()); + touchPoint.setState(Qt::TouchPointMoved); + break; + case QEvent::MouseButtonRelease: + // Check if any buttons are still held down after this event. + if (mouseEvent->buttons()) + touchType = QEvent::TouchUpdate; + else + touchType = QEvent::TouchEnd; + touchPoint.setId(mouseEvent->button()); + touchPoint.setState(Qt::TouchPointReleased); + break; + case QEvent::MouseButtonDblClick: + // Eat double-clicks, their accompanying press event is all we need. + event->accept(); + return true; + default: + Q_ASSERT_X(false, "multi-touch mocking", "unhandled event type"); + } + + // A move can have resulted in multiple buttons, so we need check them individually. + if (touchPoint.id() & Qt::LeftButton) + updateTouchPoint(mouseEvent, touchPoint, Qt::LeftButton); + if (touchPoint.id() & Qt::MidButton) + updateTouchPoint(mouseEvent, touchPoint, Qt::MidButton); + if (touchPoint.id() & Qt::RightButton) + updateTouchPoint(mouseEvent, touchPoint, Qt::RightButton); + + if (m_holdingControl && touchPoint.state() == Qt::TouchPointReleased) { + // We avoid sending the release event because the Flickable is + // listening to mouse events and would start a bounce-back + // animation if it received a mouse release. + event->accept(); + return true; + } + + // Update states for all other touch-points + for (QHash::iterator it = m_touchPoints.begin(), end = m_touchPoints.end(); it != end; ++it) { + if (!(it.value().id() & touchPoint.id())) + it.value().setState(Qt::TouchPointStationary); + } + + Q_ASSERT(touchType != QEvent::None); + + if (!sendTouchEvent(window, touchType, mouseEvent->timestamp())) + return false; + + event->accept(); + return true; + } + return false; } +static inline QRectF touchRectForPosition(QPointF centerPoint) { + QRectF touchRect(0, 0, 40, 40); + touchRect.moveCenter(centerPoint); + return touchRect; +} + +void Application::updateTouchPoint(const QMouseEvent* mouseEvent, QTouchEvent::TouchPoint touchPoint, Qt::MouseButton mouseButton) +{ + // Ignore inserting additional touch points if Ctrl isn't held because it produces + // inconsistent touch events and results in assers in the gesture recognizers. + if (!m_holdingControl && m_touchPoints.size() && !m_touchPoints.contains(mouseButton)) + return; + + if (m_holdingControl && touchPoint.state() == Qt::TouchPointReleased) { + m_heldTouchPoints.insert(mouseButton); + return; + } + + // Gesture recognition uses the screen position for the initial threshold + // but since the canvas translates touch events we actually need to pass + // the screen position as the scene position to deliver the appropriate + // coordinates to the target. + touchPoint.setRect(touchRectForPosition(mouseEvent->localPos())); + touchPoint.setSceneRect(touchRectForPosition(mouseEvent->screenPos())); + + if (touchPoint.state() == Qt::TouchPointPressed) + touchPoint.setStartScenePos(mouseEvent->screenPos()); + else { + const QTouchEvent::TouchPoint& oldTouchPoint = m_touchPoints[mouseButton]; + touchPoint.setStartScenePos(oldTouchPoint.startScenePos()); + touchPoint.setLastPos(oldTouchPoint.pos()); + touchPoint.setLastScenePos(oldTouchPoint.scenePos()); + } + + // Update current touch-point. + touchPoint.setId(mouseButton); + m_touchPoints.insert(mouseButton, touchPoint); +} + +bool Application::sendTouchEvent(QQuickWindow* window, QEvent::Type type, ulong timestamp) +{ + static QTouchDevice* device = 0; + if (!device) { + device = new QTouchDevice; + device->setType(QTouchDevice::TouchScreen); + QWindowSystemInterface::registerTouchDevice(device); + } + + m_pendingFakeTouchEventCount++; + + const QList& currentTouchPoints = m_touchPoints.values(); + Qt::TouchPointStates touchPointStates = 0; + foreach (const QTouchEvent::TouchPoint& touchPoint, currentTouchPoints) + touchPointStates |= touchPoint.state(); + + QTouchEvent event(type, device, Qt::NoModifier, touchPointStates, currentTouchPoints); + event.setTimestamp(timestamp); + event.setAccepted(false); + + QGuiApplication::notify(window, &event); + + //updateVisualMockTouchPoints(window,m_holdingControl ? currentTouchPoints : QList()); + + // Get rid of touch-points that are no longer valid + foreach (const QTouchEvent::TouchPoint& touchPoint, currentTouchPoints) { + if (touchPoint.state() == Qt::TouchPointReleased) + m_touchPoints.remove(touchPoint.id()); + } + + return event.isAccepted(); +} + +//void Application::updateVisualMockTouchPoints(QQuickWindow* window, const QList& touchPoints) +//{ +// if (touchPoints.isEmpty()) { +// // Hide all touch indicator items. +// foreach (QQuickItem* item, m_activeMockComponents.values()) +// item->setProperty("pressed", false); + +// return; +// } + +// foreach (const QTouchEvent::TouchPoint& touchPoint, touchPoints) { +// QQuickItem* mockTouchPointItem = m_activeMockComponents.value(touchPoint.id()); + +// if (!mockTouchPointItem) { +// QQmlComponent touchMockPointComponent(window->engine(), QUrl("qrc:///qml/MockTouchPoint.qml")); +// mockTouchPointItem = qobject_cast(touchMockPointComponent.create()); +// Q_ASSERT(mockTouchPointItem); +// m_activeMockComponents.insert(touchPoint.id(), mockTouchPointItem); +// mockTouchPointItem->setProperty("pointId", QVariant(touchPoint.id())); +// mockTouchPointItem->setParent(window->rootObject()); +// mockTouchPointItem->setParentItem(window->rootObject()); +// } + +// QRectF touchRect = touchPoint.rect(); +// mockTouchPointItem->setX(touchRect.center().x()); +// mockTouchPointItem->setY(touchRect.center().y()); +// mockTouchPointItem->setWidth(touchRect.width()); +// mockTouchPointItem->setHeight(touchRect.height()); +// mockTouchPointItem->setProperty("pressed", QVariant(touchPoint.state() != Qt::TouchPointReleased)); +// } +//} + static bool _altPressed{ false }; void Application::keyPressEvent(QKeyEvent* event) { diff --git a/interface/src/Application.h b/interface/src/Application.h index c7f83ad28f..9be43c4d1d 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -25,6 +25,8 @@ #include #include +#include + #include #include #include @@ -516,6 +518,10 @@ private: void maybeToggleMenuVisible(QMouseEvent* event) const; void toggleTabletUI(bool shouldOpen = false) const; + void updateTouchPoint(const QMouseEvent *event, QTouchEvent::TouchPoint, Qt::MouseButton); + bool sendTouchEvent(QQuickWindow* window, QEvent::Type, ulong timestamp); + //void updateVisualMockTouchPoints(QQuickWindow *window,const QList &touchPoints); + MainWindow* _window; QElapsedTimer& _sessionRunTimer; @@ -705,6 +711,20 @@ private: RayPickManager _rayPickManager; LaserPointerManager _laserPointerManager; + //touch mocking + bool m_realTouchEventReceived { false }; + int m_pendingFakeTouchEventCount { 0 }; + + QPointF m_lastPos; + QPointF m_lastScreenPos; + QPointF m_startScreenPos; + + QHash m_touchPoints; + QSet m_heldTouchPoints; + QHash m_activeMockComponents; + + bool m_holdingControl { false }; + friend class RenderEventHandler; }; #endif // hifi_Application_h diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index b50ac9d7cf..f570d31bd6 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -67,7 +67,7 @@ Web3DOverlay::Web3DOverlay() : _dpi(DPI) { _touchDevice.setType(QTouchDevice::TouchScreen); _touchDevice.setName("RenderableWebEntityItemTouchDevice"); _touchDevice.setMaximumTouchPoints(4); - + QWindowSystemInterface::registerTouchDevice(&_touchDevice); _geometryId = DependencyManager::get()->allocateID(); connect(this, &Web3DOverlay::requestWebSurface, this, &Web3DOverlay::buildWebSurface); connect(this, &Web3DOverlay::releaseWebSurface, this, &Web3DOverlay::destroyWebSurface); @@ -367,11 +367,18 @@ void Web3DOverlay::setProxyWindow(QWindow* proxyWindow) { } void Web3DOverlay::handlePointerEvent(const PointerEvent& event) { - //if (_inputMode == Touch) { + if (_inputMode == Touch) { handlePointerEventAsTouch(event); -// } else { -// handlePointerEventAsMouse(event); -// } + } else { + handlePointerEventAsMouse(event); + } +} + +static inline QRectF touchRectForPosition(QPointF centerPoint) +{ + QRectF touchRect(0, 0, 40, 40); + touchRect.moveCenter(centerPoint); + return touchRect; } void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { @@ -411,15 +418,36 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { touchType = QEvent::TouchEnd; } + static QTouchEvent::TouchPoint oldTouchPoint; { QTouchEvent::TouchPoint point; point.setId(event.getID()); point.setState(state); point.setPos(windowPoint); point.setScreenPos(windowPoint); + + + // Gesture recognition uses the screen position for the initial threshold + // but since the canvas translates touch events we actually need to pass + // the screen position as the scene position to deliver the appropriate + // coordinates to the target. + point.setRect(touchRectForPosition(windowPoint)); + point.setSceneRect(touchRectForPosition(windowPoint)); + + if (point.state() == Qt::TouchPointPressed) { + point.setStartScenePos(windowPoint); + oldTouchPoint = point; + } else { + //const QTouchEvent::TouchPoint& oldTouchPoint = _activeTouchPoints[event.getID()]; + point.setStartScenePos(oldTouchPoint.startScenePos()); + point.setLastPos(oldTouchPoint.pos()); + point.setLastScenePos(oldTouchPoint.scenePos()); + } _activeTouchPoints[event.getID()] = point; } + + QTouchEvent touchEvent(touchType, &_touchDevice, event.getKeyboardModifiers()); { QList touchPoints; From 58c0141f27c8387848daa9f53128698e3d20a32f Mon Sep 17 00:00:00 2001 From: vladest Date: Tue, 12 Sep 2017 19:00:00 +0200 Subject: [PATCH 003/329] Remove unnecessary code --- interface/CMakeLists.txt | 3 - .../qml/controls/FlickableWebViewCore.qml | 42 +-- interface/src/Application.cpp | 247 ------------------ interface/src/Application.h | 20 -- interface/src/ui/overlays/Web3DOverlay.cpp | 8 +- 5 files changed, 26 insertions(+), 294 deletions(-) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 41c7a4d8a4..43e50c6d33 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -17,9 +17,6 @@ endforeach() find_package(Qt5LinguistTools REQUIRED) find_package(Qt5LinguistToolsMacros) -find_package(Qt5Gui) -include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS}) - if (WIN32) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -bigobj") add_definitions(-D_USE_MATH_DEFINES) # apparently needed to get M_PI and other defines from cmath/math.h diff --git a/interface/resources/qml/controls/FlickableWebViewCore.qml b/interface/resources/qml/controls/FlickableWebViewCore.qml index bf9fe116c5..09436d92f8 100644 --- a/interface/resources/qml/controls/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/FlickableWebViewCore.qml @@ -6,7 +6,7 @@ import QtQuick.Controls 2.2 import "../styles-uit" as StylesUIt -Flickable { +Item { id: flick property alias url: _webview.url @@ -14,17 +14,17 @@ Flickable { property alias webViewCore: _webview property alias webViewCoreProfile: _webview.profile - interactive: true + property bool interactive: false property string userScriptUrl: "" property string urlTag: "noDownload=false"; signal newViewRequestedCallback(var request) signal loadingChangedCallback(var loadRequest) - pressDelay: 300 + //pressDelay: 300 property real previousHeight: height - boundsBehavior: Flickable.StopAtBounds + //boundsBehavior: Flickable.StopAtBounds StylesUIt.HifiConstants { id: hifi @@ -38,17 +38,17 @@ Flickable { // } // } - ScrollBar.vertical: ScrollBar { - id: scrollBar - visible: flick.contentHeight > flick.height +// ScrollBar.vertical: ScrollBar { +// id: scrollBar +// visible: flick.contentHeight > flick.height - contentItem: Rectangle { - opacity: 0.75 - implicitWidth: hifi.dimensions.scrollbarHandleWidth - radius: height / 2 - color: hifi.colors.tableScrollHandleDark - } - } +// contentItem: Rectangle { +// opacity: 0.75 +// implicitWidth: hifi.dimensions.scrollbarHandleWidth +// radius: height / 2 +// color: hifi.colors.tableScrollHandleDark +// } +// } function onLoadingChanged(loadRequest) { if (WebEngineView.LoadStartedStatus === loadRequest.status) { @@ -152,7 +152,7 @@ Flickable { property string newUrl: "" Component.onCompleted: { - width = Qt.binding(function() { return flick.width; }); + //width = Qt.binding(function() { return flick.width; }); webChannel.registerObject("eventBridge", eventBridge); webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); // Ensure the JS from the web-engine makes it to our logging @@ -196,10 +196,10 @@ Flickable { z: 10000 } - MouseArea { - anchors.fill: parent - onWheel: { - flick.flick(0, wheel.angleDelta.y*10) - } - } +// MouseArea { +// anchors.fill: parent +// onWheel: { +// flick.flick(0, wheel.angleDelta.y*10) +// } +// } } diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 956ace7a28..3650c495f2 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -281,34 +281,6 @@ private: Q_LOGGING_CATEGORY(trace_app_input_mouse, "trace.app.input.mouse") -namespace utils { -inline bool isTouchEvent(const QEvent* event) -{ - switch (event->type()) { - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: - return true; - default: - return false; - } -} - -inline bool isMouseEvent(const QEvent* event) -{ - switch (event->type()) { - case QEvent::MouseButtonPress: - case QEvent::MouseMove: - case QEvent::MouseButtonRelease: - case QEvent::MouseButtonDblClick: - return true; - default: - return false; - } -} - -} - using namespace std; static QTimer locationUpdateTimer; @@ -3091,228 +3063,9 @@ bool Application::eventFilter(QObject* object, QEvent* event) { } } - // We try to be smart, if we received real touch event, we are probably on a device - // with touch screen, and we should not have touch mocking. - - if (!event->spontaneous() || m_realTouchEventReceived) - return false; - - if (utils::isTouchEvent(event)) { - if (m_pendingFakeTouchEventCount) - --m_pendingFakeTouchEventCount; - else - m_realTouchEventReceived = true; - return false; - } - - QQuickWindow* window = qobject_cast(object); - if (!window) { - return false; - } - - m_holdingControl = QGuiApplication::keyboardModifiers().testFlag(Qt::ControlModifier); - - if (event->type() == QEvent::KeyRelease && static_cast(event)->key() == Qt::Key_Control) { - foreach (int id, m_heldTouchPoints) - if (m_touchPoints.contains(id) && !QGuiApplication::mouseButtons().testFlag(Qt::MouseButton(id))) { - m_touchPoints[id].setState(Qt::TouchPointReleased); - m_heldTouchPoints.remove(id); - } else - m_touchPoints[id].setState(Qt::TouchPointStationary); - sendTouchEvent(window, m_heldTouchPoints.isEmpty() ? QEvent::TouchEnd : QEvent::TouchUpdate, static_cast(event)->timestamp()); - } - - if (utils::isMouseEvent(event)) { - const QMouseEvent* const mouseEvent = static_cast(event); - - QTouchEvent::TouchPoint touchPoint; - touchPoint.setPressure(1); - - QEvent::Type touchType = QEvent::None; - - switch (mouseEvent->type()) { - case QEvent::MouseButtonPress: - touchPoint.setId(mouseEvent->button()); - if (m_touchPoints.contains(touchPoint.id())) { - touchPoint.setState(Qt::TouchPointMoved); - touchType = QEvent::TouchUpdate; - } else { - touchPoint.setState(Qt::TouchPointPressed); - // Check if more buttons are held down than just the event triggering one. - if (mouseEvent->buttons() > mouseEvent->button()) - touchType = QEvent::TouchUpdate; - else - touchType = QEvent::TouchBegin; - } - break; - case QEvent::MouseMove: - if (!mouseEvent->buttons()) { - // We have to swallow the event instead of propagating it, - // since we avoid sending the mouse release events and if the - // Flickable is the mouse grabber it would receive the event - // and would move the content. - event->accept(); - return true; - } - touchType = QEvent::TouchUpdate; - touchPoint.setId(mouseEvent->buttons()); - touchPoint.setState(Qt::TouchPointMoved); - break; - case QEvent::MouseButtonRelease: - // Check if any buttons are still held down after this event. - if (mouseEvent->buttons()) - touchType = QEvent::TouchUpdate; - else - touchType = QEvent::TouchEnd; - touchPoint.setId(mouseEvent->button()); - touchPoint.setState(Qt::TouchPointReleased); - break; - case QEvent::MouseButtonDblClick: - // Eat double-clicks, their accompanying press event is all we need. - event->accept(); - return true; - default: - Q_ASSERT_X(false, "multi-touch mocking", "unhandled event type"); - } - - // A move can have resulted in multiple buttons, so we need check them individually. - if (touchPoint.id() & Qt::LeftButton) - updateTouchPoint(mouseEvent, touchPoint, Qt::LeftButton); - if (touchPoint.id() & Qt::MidButton) - updateTouchPoint(mouseEvent, touchPoint, Qt::MidButton); - if (touchPoint.id() & Qt::RightButton) - updateTouchPoint(mouseEvent, touchPoint, Qt::RightButton); - - if (m_holdingControl && touchPoint.state() == Qt::TouchPointReleased) { - // We avoid sending the release event because the Flickable is - // listening to mouse events and would start a bounce-back - // animation if it received a mouse release. - event->accept(); - return true; - } - - // Update states for all other touch-points - for (QHash::iterator it = m_touchPoints.begin(), end = m_touchPoints.end(); it != end; ++it) { - if (!(it.value().id() & touchPoint.id())) - it.value().setState(Qt::TouchPointStationary); - } - - Q_ASSERT(touchType != QEvent::None); - - if (!sendTouchEvent(window, touchType, mouseEvent->timestamp())) - return false; - - event->accept(); - return true; - } - return false; } -static inline QRectF touchRectForPosition(QPointF centerPoint) { - QRectF touchRect(0, 0, 40, 40); - touchRect.moveCenter(centerPoint); - return touchRect; -} - -void Application::updateTouchPoint(const QMouseEvent* mouseEvent, QTouchEvent::TouchPoint touchPoint, Qt::MouseButton mouseButton) -{ - // Ignore inserting additional touch points if Ctrl isn't held because it produces - // inconsistent touch events and results in assers in the gesture recognizers. - if (!m_holdingControl && m_touchPoints.size() && !m_touchPoints.contains(mouseButton)) - return; - - if (m_holdingControl && touchPoint.state() == Qt::TouchPointReleased) { - m_heldTouchPoints.insert(mouseButton); - return; - } - - // Gesture recognition uses the screen position for the initial threshold - // but since the canvas translates touch events we actually need to pass - // the screen position as the scene position to deliver the appropriate - // coordinates to the target. - touchPoint.setRect(touchRectForPosition(mouseEvent->localPos())); - touchPoint.setSceneRect(touchRectForPosition(mouseEvent->screenPos())); - - if (touchPoint.state() == Qt::TouchPointPressed) - touchPoint.setStartScenePos(mouseEvent->screenPos()); - else { - const QTouchEvent::TouchPoint& oldTouchPoint = m_touchPoints[mouseButton]; - touchPoint.setStartScenePos(oldTouchPoint.startScenePos()); - touchPoint.setLastPos(oldTouchPoint.pos()); - touchPoint.setLastScenePos(oldTouchPoint.scenePos()); - } - - // Update current touch-point. - touchPoint.setId(mouseButton); - m_touchPoints.insert(mouseButton, touchPoint); -} - -bool Application::sendTouchEvent(QQuickWindow* window, QEvent::Type type, ulong timestamp) -{ - static QTouchDevice* device = 0; - if (!device) { - device = new QTouchDevice; - device->setType(QTouchDevice::TouchScreen); - QWindowSystemInterface::registerTouchDevice(device); - } - - m_pendingFakeTouchEventCount++; - - const QList& currentTouchPoints = m_touchPoints.values(); - Qt::TouchPointStates touchPointStates = 0; - foreach (const QTouchEvent::TouchPoint& touchPoint, currentTouchPoints) - touchPointStates |= touchPoint.state(); - - QTouchEvent event(type, device, Qt::NoModifier, touchPointStates, currentTouchPoints); - event.setTimestamp(timestamp); - event.setAccepted(false); - - QGuiApplication::notify(window, &event); - - //updateVisualMockTouchPoints(window,m_holdingControl ? currentTouchPoints : QList()); - - // Get rid of touch-points that are no longer valid - foreach (const QTouchEvent::TouchPoint& touchPoint, currentTouchPoints) { - if (touchPoint.state() == Qt::TouchPointReleased) - m_touchPoints.remove(touchPoint.id()); - } - - return event.isAccepted(); -} - -//void Application::updateVisualMockTouchPoints(QQuickWindow* window, const QList& touchPoints) -//{ -// if (touchPoints.isEmpty()) { -// // Hide all touch indicator items. -// foreach (QQuickItem* item, m_activeMockComponents.values()) -// item->setProperty("pressed", false); - -// return; -// } - -// foreach (const QTouchEvent::TouchPoint& touchPoint, touchPoints) { -// QQuickItem* mockTouchPointItem = m_activeMockComponents.value(touchPoint.id()); - -// if (!mockTouchPointItem) { -// QQmlComponent touchMockPointComponent(window->engine(), QUrl("qrc:///qml/MockTouchPoint.qml")); -// mockTouchPointItem = qobject_cast(touchMockPointComponent.create()); -// Q_ASSERT(mockTouchPointItem); -// m_activeMockComponents.insert(touchPoint.id(), mockTouchPointItem); -// mockTouchPointItem->setProperty("pointId", QVariant(touchPoint.id())); -// mockTouchPointItem->setParent(window->rootObject()); -// mockTouchPointItem->setParentItem(window->rootObject()); -// } - -// QRectF touchRect = touchPoint.rect(); -// mockTouchPointItem->setX(touchRect.center().x()); -// mockTouchPointItem->setY(touchRect.center().y()); -// mockTouchPointItem->setWidth(touchRect.width()); -// mockTouchPointItem->setHeight(touchRect.height()); -// mockTouchPointItem->setProperty("pressed", QVariant(touchPoint.state() != Qt::TouchPointReleased)); -// } -//} - static bool _altPressed{ false }; void Application::keyPressEvent(QKeyEvent* event) { diff --git a/interface/src/Application.h b/interface/src/Application.h index 9be43c4d1d..c7f83ad28f 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -25,8 +25,6 @@ #include #include -#include - #include #include #include @@ -518,10 +516,6 @@ private: void maybeToggleMenuVisible(QMouseEvent* event) const; void toggleTabletUI(bool shouldOpen = false) const; - void updateTouchPoint(const QMouseEvent *event, QTouchEvent::TouchPoint, Qt::MouseButton); - bool sendTouchEvent(QQuickWindow* window, QEvent::Type, ulong timestamp); - //void updateVisualMockTouchPoints(QQuickWindow *window,const QList &touchPoints); - MainWindow* _window; QElapsedTimer& _sessionRunTimer; @@ -711,20 +705,6 @@ private: RayPickManager _rayPickManager; LaserPointerManager _laserPointerManager; - //touch mocking - bool m_realTouchEventReceived { false }; - int m_pendingFakeTouchEventCount { 0 }; - - QPointF m_lastPos; - QPointF m_lastScreenPos; - QPointF m_startScreenPos; - - QHash m_touchPoints; - QSet m_heldTouchPoints; - QHash m_activeMockComponents; - - bool m_holdingControl { false }; - friend class RenderEventHandler; }; #endif // hifi_Application_h diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index f570d31bd6..214b0c58fc 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -67,7 +67,6 @@ Web3DOverlay::Web3DOverlay() : _dpi(DPI) { _touchDevice.setType(QTouchDevice::TouchScreen); _touchDevice.setName("RenderableWebEntityItemTouchDevice"); _touchDevice.setMaximumTouchPoints(4); - QWindowSystemInterface::registerTouchDevice(&_touchDevice); _geometryId = DependencyManager::get()->allocateID(); connect(this, &Web3DOverlay::requestWebSurface, this, &Web3DOverlay::buildWebSurface); connect(this, &Web3DOverlay::releaseWebSurface, this, &Web3DOverlay::destroyWebSurface); @@ -419,12 +418,14 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { } static QTouchEvent::TouchPoint oldTouchPoint; + { QTouchEvent::TouchPoint point; point.setId(event.getID()); point.setState(state); point.setPos(windowPoint); point.setScreenPos(windowPoint); + point.setPressure(1); // Gesture recognition uses the screen position for the initial threshold @@ -446,8 +447,6 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { _activeTouchPoints[event.getID()] = point; } - - QTouchEvent touchEvent(touchType, &_touchDevice, event.getKeyboardModifiers()); { QList touchPoints; @@ -485,6 +484,9 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { } #endif + touchEvent.setTimestamp((ulong)QDateTime::currentMSecsSinceEpoch()); + touchEvent.setAccepted(false); + if (touchType == QEvent::TouchBegin) { _touchBeginAccepted = QCoreApplication::sendEvent(_webSurface->getWindow(), &touchEvent); } else if (_touchBeginAccepted) { From 1860a2cb16711debbcc651d2030b54ab7a1521df Mon Sep 17 00:00:00 2001 From: vladest Date: Thu, 14 Sep 2017 14:40:22 +0200 Subject: [PATCH 004/329] Experimentsl CSS injector --- .../qml/controls/FlickableWebViewCore.qml | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/controls/FlickableWebViewCore.qml b/interface/resources/qml/controls/FlickableWebViewCore.qml index d1980c7dc3..ac3a3cfb24 100644 --- a/interface/resources/qml/controls/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/FlickableWebViewCore.qml @@ -84,17 +84,32 @@ Item { worldId: WebEngineScript.MainWorld } - userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard, userScript ] + WebEngineScript { + id: userCSSScript + property string css: "\nhtml > ::-webkit-scrollbar { width: 0px; height: 0px; }" + sourceCode: "(function() { + var css = document.createElement('style'); + css.setAttribute('type', 'text/css'); + css.appendChild(document.createTextNode('%1')); + document.getElementsByTagName('head')[0].appendChild(" + css + ");})()" + injectionPoint: WebEngineScript.DocumentReady // DOM ready but page load may not be finished. + worldId: WebEngineScript.MainWorld + } + + userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard, userScript, userCSSScript ] property string newUrl: "" + onJavaScriptConsoleMessage: { + console.log("Web Entity JS message: " + sourceID + " at line: " + lineNumber + " " + message); + } Component.onCompleted: { webChannel.registerObject("eventBridge", eventBridge); webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); - // Ensure the JS from the web-engine makes it to our logging - webViewCore.javaScriptConsoleMessage.connect(function(level, message, lineNumber, sourceID) { - console.log("Web Entity JS message: " + sourceID + " " + lineNumber + " " + message); - }); +// // Ensure the JS from the web-engine makes it to our logging +// webViewCore.javaScriptConsoleMessage.connect(function(level, message, lineNumber, sourceID) { +// console.log("Web Entity JS message: " + sourceID + " at line: " + lineNumber + " " + message); +// }); if (webViewCoreUserAgent !== undefined) { webViewCore.profile.httpUserAgent = webViewCoreUserAgent } else { From 9a92b5635d0b3eb24d6b8c192274643b31843b7f Mon Sep 17 00:00:00 2001 From: vladest Date: Thu, 5 Oct 2017 15:17:37 +0200 Subject: [PATCH 005/329] Fix too wide web view --- interface/resources/qml/controls/FlickableWebViewCore.qml | 4 +++- interface/src/main.cpp | 2 -- scripts/system/edit.js | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/interface/resources/qml/controls/FlickableWebViewCore.qml b/interface/resources/qml/controls/FlickableWebViewCore.qml index ac3a3cfb24..aefca21d69 100644 --- a/interface/resources/qml/controls/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/FlickableWebViewCore.qml @@ -21,6 +21,7 @@ Item { signal newViewRequestedCallback(var request) signal loadingChangedCallback(var loadRequest) + width: parent.width property bool interactive: false @@ -53,7 +54,8 @@ Item { WebEngineView { id: webViewCore - anchors.fill: parent + width: parent.width + height: parent.height profile: HFWebEngineProfile; settings.pluginsEnabled: true diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 1493fc53b9..5c07bebc23 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -231,8 +231,6 @@ int main(int argc, const char* argv[]) { // Extend argv to enable WebGL rendering std::vector argvExtended(&argv[0], &argv[argc]); argvExtended.push_back("--ignore-gpu-blacklist"); - argvExtended.push_back("--enable-embedded-switches"); - argvExtended.push_back("--disable-overlay-scrollbar"); int argcExtended = (int)argvExtended.size(); Application app(argcExtended, const_cast(argvExtended.data()), startupTime, runningMarkerExisted); diff --git a/scripts/system/edit.js b/scripts/system/edit.js index a3594cb21b..346f3626b9 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1952,7 +1952,6 @@ var PropertiesTool = function (opts) { data.properties.keyLight.direction.y * DEGREES_TO_RADIANS ); } - print("data properties " + data.properties) Entities.editEntity(selectionManager.selections[0], data.properties); if (data.properties.name !== undefined || data.properties.modelURL !== undefined || data.properties.visible !== undefined || data.properties.locked !== undefined) { From cb21aaff721c41dcfa70fb7d01f7c0dce2c503f0 Mon Sep 17 00:00:00 2001 From: vladest Date: Thu, 5 Oct 2017 15:43:07 +0200 Subject: [PATCH 006/329] Accept touch event according to last accepted values --- interface/src/ui/overlays/Web3DOverlay.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 6060b342a5..6f7c219ec5 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -468,7 +468,7 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { #endif touchEvent.setTimestamp((ulong)QDateTime::currentMSecsSinceEpoch()); - touchEvent.setAccepted(false); + touchEvent.setAccepted(_touchBeginAccepted); if (touchType == QEvent::TouchBegin) { _touchBeginAccepted = QCoreApplication::sendEvent(_webSurface->getWindow(), &touchEvent); From d6ebd3d828df3c25c9aca4309619e3e5bfa53abd Mon Sep 17 00:00:00 2001 From: vladest Date: Thu, 12 Oct 2017 15:33:13 +0200 Subject: [PATCH 007/329] Remove static old touch point --- interface/src/ui/overlays/Web3DOverlay.cpp | 10 +++++----- interface/src/ui/overlays/Web3DOverlay.h | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 989b51862c..f87ab35189 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -402,8 +402,6 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { touchType = QEvent::TouchEnd; } - static QTouchEvent::TouchPoint oldTouchPoint; - { QTouchEvent::TouchPoint point; point.setId(event.getID()); @@ -425,9 +423,11 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { oldTouchPoint = point; } else { //const QTouchEvent::TouchPoint& oldTouchPoint = _activeTouchPoints[event.getID()]; - point.setStartScenePos(oldTouchPoint.startScenePos()); - point.setLastPos(oldTouchPoint.pos()); - point.setLastScenePos(oldTouchPoint.scenePos()); + if (oldTouchPoint.id() != -1) { + point.setStartScenePos(oldTouchPoint.startScenePos()); + point.setLastPos(oldTouchPoint.pos()); + point.setLastScenePos(oldTouchPoint.scenePos()); + } } _activeTouchPoints[event.getID()] = point; } diff --git a/interface/src/ui/overlays/Web3DOverlay.h b/interface/src/ui/overlays/Web3DOverlay.h index de74b95b3e..0685f3d68e 100644 --- a/interface/src/ui/overlays/Web3DOverlay.h +++ b/interface/src/ui/overlays/Web3DOverlay.h @@ -103,6 +103,7 @@ private: uint8_t _currentMaxFPS { 0 }; bool _mayNeedResize { false }; + QTouchEvent::TouchPoint oldTouchPoint; }; #endif // hifi_Web3DOverlay_h From f524f8a50f6fd783c8eb717c4afe7117a82d8353 Mon Sep 17 00:00:00 2001 From: vladest Date: Fri, 13 Oct 2017 12:56:08 +0200 Subject: [PATCH 008/329] Remove commented code --- interface/resources/qml/controls/FlickableWebViewCore.qml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/interface/resources/qml/controls/FlickableWebViewCore.qml b/interface/resources/qml/controls/FlickableWebViewCore.qml index aefca21d69..1e43fad02b 100644 --- a/interface/resources/qml/controls/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/FlickableWebViewCore.qml @@ -108,10 +108,7 @@ Item { Component.onCompleted: { webChannel.registerObject("eventBridge", eventBridge); webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); -// // Ensure the JS from the web-engine makes it to our logging -// webViewCore.javaScriptConsoleMessage.connect(function(level, message, lineNumber, sourceID) { -// console.log("Web Entity JS message: " + sourceID + " at line: " + lineNumber + " " + message); -// }); + if (webViewCoreUserAgent !== undefined) { webViewCore.profile.httpUserAgent = webViewCoreUserAgent } else { From 13c204400e804130f7ba844336d2cb4e3be61e56 Mon Sep 17 00:00:00 2001 From: vladest Date: Sat, 14 Oct 2017 22:25:49 +0200 Subject: [PATCH 009/329] Reuse activeTouchPoints --- interface/src/ui/overlays/Web3DOverlay.cpp | 6 +++--- interface/src/ui/overlays/Web3DOverlay.h | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index f87ab35189..92783bf149 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -397,7 +397,8 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { if (_activeTouchPoints.empty()) { // If the first active touch point is being created, send a begin touchType = QEvent::TouchBegin; - } if (state == Qt::TouchPointReleased && _activeTouchPoints.size() == 1 && _activeTouchPoints.count(event.getID())) { + } + if (state == Qt::TouchPointReleased && _activeTouchPoints.size() == 1 && _activeTouchPoints.count(event.getID())) { // If the last active touch point is being released, send an end touchType = QEvent::TouchEnd; } @@ -420,9 +421,8 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { if (point.state() == Qt::TouchPointPressed) { point.setStartScenePos(windowPoint); - oldTouchPoint = point; } else { - //const QTouchEvent::TouchPoint& oldTouchPoint = _activeTouchPoints[event.getID()]; + const QTouchEvent::TouchPoint& oldTouchPoint = _activeTouchPoints[event.getID()]; if (oldTouchPoint.id() != -1) { point.setStartScenePos(oldTouchPoint.startScenePos()); point.setLastPos(oldTouchPoint.pos()); diff --git a/interface/src/ui/overlays/Web3DOverlay.h b/interface/src/ui/overlays/Web3DOverlay.h index 0685f3d68e..de74b95b3e 100644 --- a/interface/src/ui/overlays/Web3DOverlay.h +++ b/interface/src/ui/overlays/Web3DOverlay.h @@ -103,7 +103,6 @@ private: uint8_t _currentMaxFPS { 0 }; bool _mayNeedResize { false }; - QTouchEvent::TouchPoint oldTouchPoint; }; #endif // hifi_Web3DOverlay_h From f97a097ce96a51d538a305306f39a3e0789c9982 Mon Sep 17 00:00:00 2001 From: vladest Date: Tue, 17 Oct 2017 19:31:17 +0200 Subject: [PATCH 010/329] Remove acceft flag. not necessary --- interface/src/ui/overlays/Web3DOverlay.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 92783bf149..2695d5300c 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -470,7 +470,6 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { #endif touchEvent.setTimestamp((ulong)QDateTime::currentMSecsSinceEpoch()); - touchEvent.setAccepted(_touchBeginAccepted); if (touchType == QEvent::TouchBegin) { _touchBeginAccepted = QCoreApplication::sendEvent(_webSurface->getWindow(), &touchEvent); From a1110bf28dda82eaff9454b9e7d947cfe504decc Mon Sep 17 00:00:00 2001 From: Daniela Date: Thu, 26 Oct 2017 16:52:58 +0100 Subject: [PATCH 011/329] Rotations now happen using the correct axis taking into account the avatar referential --- scripts/system/libraries/entitySelectionTool.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index 3a422bcb8a..d5cc46586a 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -1346,6 +1346,11 @@ SelectionDisplay = (function() { } } + // place yaw, pitch and roll rotations on the avatar referential + yawHandleRotation = Quat.multiply(MyAvatar.orientation , yawHandleRotation); + pitchHandleRotation = Quat.multiply(MyAvatar.orientation , pitchHandleRotation); + rollHandleRotation = Quat.multiply(MyAvatar.orientation , rollHandleRotation); + var rotateHandlesVisible = true; var rotationOverlaysVisible = false; // note: Commented out as these are currently unused here; however, @@ -3498,6 +3503,8 @@ SelectionDisplay = (function() { initialPosition = SelectionManager.worldPosition; rotationNormal = { x: 0, y: 0, z: 0 }; rotationNormal[rotAroundAxis] = 1; + //get the correct axis according to the avatar referencial + rotationNormal = Vec3.multiplyQbyV(MyAvatar.orientation, rotationNormal); // Size the overlays to the current selection size var diagonal = (Vec3.length(SelectionManager.worldDimensions) / 2) * 1.1; @@ -3599,9 +3606,8 @@ SelectionDisplay = (function() { var snapAngle = snapToInner ? innerSnapAngle : 1.0; angleFromZero = Math.floor(angleFromZero / snapAngle) * snapAngle; - var vec3Degrees = { x: 0, y: 0, z: 0 }; - vec3Degrees[rotAroundAxis] = angleFromZero; - var rotChange = Quat.fromVec3Degrees(vec3Degrees); + + var rotChange = Quat.angleAxis(angleFromZero, rotationNormal); updateSelectionsRotation(rotChange); updateRotationDegreesOverlay(angleFromZero, handleRotation, rotCenter); From 2ceba76ba2cac92ad16293889dc86be8188abae1 Mon Sep 17 00:00:00 2001 From: Daniela Date: Fri, 27 Oct 2017 11:28:44 +0100 Subject: [PATCH 012/329] yaw tool --- .../system/libraries/entitySelectionTool.js | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index d5cc46586a..3408b63e7a 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -1099,6 +1099,8 @@ SelectionDisplay = (function() { ------------------------------*/ var cameraPosition = Camera.getPosition(); + var look = Vec3.normalize(Vec3.subtract(cameraPosition, objectCenter)); + if (cameraPosition.x > objectCenter.x) { // must be BRF or BRN if (cameraPosition.z < objectCenter.z) { @@ -1350,6 +1352,38 @@ SelectionDisplay = (function() { yawHandleRotation = Quat.multiply(MyAvatar.orientation , yawHandleRotation); pitchHandleRotation = Quat.multiply(MyAvatar.orientation , pitchHandleRotation); rollHandleRotation = Quat.multiply(MyAvatar.orientation , rollHandleRotation); + var avatarReferential = Quat.multiply(MyAvatar.orientation, Quat.fromVec3Degrees({ + x: 0, + y: 180, + z: 0 + })); + var upVector = Quat.getUp(avatarReferential); + var rightVector = Quat.getRight(avatarReferential); + var frontVector = Quat.getFront(avatarReferential); + // Centers + var xSign = -1.0; + var zSign = -1.0; + if (Vec3.dot(look, rightVector) > 0) { + xSign = 1.0; + } + if (Vec3.dot(look, frontVector) > 0) { + zSign = 1.0; + } + + yawCenter = Vec3.sum(boundsCenter, Vec3.multiply(-(dimensions.y / 2), upVector)); + var myBotom = Vec3.multiply(-(dimensions.y / 2) - rotateHandleOffset, upVector); + var myRight = Vec3.multiply(xSign * (dimensions.x / 2) + xSign * rotateHandleOffset, rightVector); + var myFront = Vec3.multiply(zSign * (dimensions.z / 2) + zSign * rotateHandleOffset, frontVector); + yawCorner = Vec3.sum(boundsCenter, Vec3.sum(Vec3.sum(myBotom, myRight), myFront)); + + + yawHandleRotation = Quat.lookAt(yawCorner, Vec3.sum(yawCorner, upVector), Vec3.subtract(yawCenter,yawCorner)); + yawHandleRotation = Quat.multiply(Quat.angleAxis(45, upVector), yawHandleRotation); + + //Quat.fromPitchYawRollDegrees(0,270,0) + pitchCenter = Vec3.sum(boundsCenter, Vec3.multiply(xSign * (dimensions.x / 2), rightVector)); + rollCenter = Vec3.sum(boundsCenter, Vec3.multiply(zSign * (dimensions.z / 2), frontVector)); + var rotateHandlesVisible = true; var rotationOverlaysVisible = false; @@ -3504,7 +3538,12 @@ SelectionDisplay = (function() { rotationNormal = { x: 0, y: 0, z: 0 }; rotationNormal[rotAroundAxis] = 1; //get the correct axis according to the avatar referencial - rotationNormal = Vec3.multiplyQbyV(MyAvatar.orientation, rotationNormal); + var avatarReferential = Quat.multiply(MyAvatar.orientation, Quat.fromVec3Degrees({ + x: 0, + y: 180, + z: 0 + })); + rotationNormal = Vec3.multiplyQbyV(avatarReferential, rotationNormal); // Size the overlays to the current selection size var diagonal = (Vec3.length(SelectionManager.worldDimensions) / 2) * 1.1; From 567a219e9ce8e8ad8b6569068dd540760ae4a976 Mon Sep 17 00:00:00 2001 From: vladest Date: Sat, 28 Oct 2017 12:01:37 +0200 Subject: [PATCH 013/329] Cleanup. Remove unused functionality --- .../qml/controls/FlickableWebViewCore.qml | 19 +------------------ interface/src/ui/overlays/Web3DOverlay.cpp | 3 +-- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/interface/resources/qml/controls/FlickableWebViewCore.qml b/interface/resources/qml/controls/FlickableWebViewCore.qml index 1e43fad02b..c0784ec15f 100644 --- a/interface/resources/qml/controls/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/FlickableWebViewCore.qml @@ -86,24 +86,7 @@ Item { worldId: WebEngineScript.MainWorld } - WebEngineScript { - id: userCSSScript - property string css: "\nhtml > ::-webkit-scrollbar { width: 0px; height: 0px; }" - sourceCode: "(function() { - var css = document.createElement('style'); - css.setAttribute('type', 'text/css'); - css.appendChild(document.createTextNode('%1')); - document.getElementsByTagName('head')[0].appendChild(" + css + ");})()" - injectionPoint: WebEngineScript.DocumentReady // DOM ready but page load may not be finished. - worldId: WebEngineScript.MainWorld - } - - userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard, userScript, userCSSScript ] - - property string newUrl: "" - onJavaScriptConsoleMessage: { - console.log("Web Entity JS message: " + sourceID + " at line: " + lineNumber + " " + message); - } + userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard, userScript ] Component.onCompleted: { webChannel.registerObject("eventBridge", eventBridge); diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 75876cd0a4..371d75b20b 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -355,8 +355,7 @@ void Web3DOverlay::handlePointerEvent(const PointerEvent& event) { } } -static inline QRectF touchRectForPosition(QPointF centerPoint) -{ +static inline QRectF touchRectForPosition(QPointF centerPoint) { QRectF touchRect(0, 0, 40, 40); touchRect.moveCenter(centerPoint); return touchRect; From ac1df7b8150fe0fbe0b044ea681f53026134c351 Mon Sep 17 00:00:00 2001 From: Menithal Date: Sun, 5 Nov 2017 00:18:48 +0200 Subject: [PATCH 014/329] 21539: Allow HMD to turned off in Desktop Mode --- .../qml/hifi/tablet/OpenVrConfiguration.qml | 37 ++++++++++++++++++- plugins/openvr/src/ViveControllerManager.cpp | 32 ++++++++++++++-- plugins/openvr/src/ViveControllerManager.h | 6 ++- 3 files changed, 69 insertions(+), 6 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/OpenVrConfiguration.qml b/interface/resources/qml/hifi/tablet/OpenVrConfiguration.qml index 78c10e2ffa..5e9bf40d41 100644 --- a/interface/resources/qml/hifi/tablet/OpenVrConfiguration.qml +++ b/interface/resources/qml/hifi/tablet/OpenVrConfiguration.qml @@ -36,7 +36,9 @@ Rectangle { readonly property bool hmdHead: headBox.checked readonly property bool headPuck: headPuckBox.checked readonly property bool handController: handBox.checked + readonly property bool handPuck: handPuckBox.checked + readonly property bool hmdDesktop: hmdInDesktop.checked property int state: buttonState.disabled property var lastConfiguration: null @@ -789,6 +791,7 @@ Rectangle { verticalCenter: viveInDesktop.verticalCenter } } + NumberAnimation { id: numberAnimation @@ -797,6 +800,35 @@ Rectangle { to: 0 } + HifiControls.CheckBox { + id: hmdInDesktop + width: 15 + height: 15 + boxRadius: 7 + + anchors.top: viveInDesktop.bottom + anchors.topMargin: 5 + anchors.left: openVrConfiguration.left + anchors.leftMargin: leftMargin + 10 + + onClicked: { + sendConfigurationSettings(); + } + } + + RalewayBold { + id: hmdDesktopText + size: 10 + text: "Use HMD in desktop mode" + color: hifi.colors.white + + anchors { + left: hmdInDesktop.right + leftMargin: 5 + verticalCenter: hmdInDesktop.verticalCenter + } + } + function logAction(action, status) { console.log("calibrated from ui"); var data = { @@ -877,6 +909,7 @@ Rectangle { var HmdHead = settings["HMDHead"]; var viveController = settings["handController"]; var desktopMode = settings["desktopMode"]; + var hmdDesktopPosition = settings["hmdDesktopTracking"]; armCircumference.value = settings.armCircumference; shoulderWidth.value = settings.shoulderWidth; @@ -898,6 +931,7 @@ Rectangle { } viveInDesktop.checked = desktopMode; + hmdInDesktop.checked = hmdDesktopPosition; initializeButtonState(); updateCalibrationText(); @@ -1058,7 +1092,8 @@ Rectangle { "handConfiguration": handObject, "armCircumference": armCircumference.value, "shoulderWidth": shoulderWidth.value, - "desktopMode": viveInDesktop.checked + "desktopMode": viveInDesktop.checked, + "hmdDesktopTracking": hmdInDesktop.checked } return settingsObject; diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index 430dc193a3..6b24aa0b5b 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -166,6 +166,12 @@ void ViveControllerManager::setConfigurationSettings(const QJsonObject configura _resetMatCalculated = false; } } + + if (configurationSettings.contains("hmdDesktopTracking")) { + + _hmdDesktopTracking = configurationSettings["hmdDesktopTracking"].toBool(); + } + _inputDevice->configureCalibrationSettings(configurationSettings); saveSettings(); } @@ -175,6 +181,7 @@ QJsonObject ViveControllerManager::configurationSettings() { if (isSupported()) { QJsonObject configurationSettings = _inputDevice->configurationSettings(); configurationSettings["desktopMode"] = _desktopMode; + configurationSettings["hmdDesktopTracking"] = _hmdDesktopTracking; return configurationSettings; } @@ -414,6 +421,8 @@ void ViveControllerManager::InputDevice::configureCalibrationSettings(const QJso if (!configurationSettings.empty()) { auto iter = configurationSettings.begin(); auto end = configurationSettings.end(); + bool hmdDesktopTracking = true; + bool hmdDesktopMode = false; while (iter != end) { if (iter.key() == "bodyConfiguration") { setConfigFromString(iter.value().toString()); @@ -441,9 +450,17 @@ void ViveControllerManager::InputDevice::configureCalibrationSettings(const QJso _armCircumference = (float)iter.value().toDouble() * CM_TO_M; } else if (iter.key() == "shoulderWidth") { _shoulderWidth = (float)iter.value().toDouble() * CM_TO_M; + } else if (iter.key() == "hmdDesktopTracking") { + hmdDesktopTracking = iter.value().toBool(); + } else if (iter.key() == "desktopMode") { + hmdDesktopMode = iter.value().toBool(); } iter++; } + + _hmdTrackingEnabled = !(hmdDesktopMode && !hmdDesktopTracking); + + qDebug() << "HMD desktop tracking Enabled" << _hmdTrackingEnabled << "-" << hmdDesktopMode << "-" << hmdDesktopTracking << !(hmdDesktopMode && !hmdDesktopTracking); } } @@ -735,11 +752,18 @@ void ViveControllerManager::InputDevice::handleHmd(uint32_t deviceIndex, const c _system->GetTrackedDeviceClass(deviceIndex) == vr::TrackedDeviceClass_HMD && _nextSimPoseData.vrPoses[deviceIndex].bPoseIsValid) { - const mat4& mat = _nextSimPoseData.poses[deviceIndex]; - const vec3 linearVelocity = _nextSimPoseData.linearVelocities[deviceIndex]; - const vec3 angularVelocity = _nextSimPoseData.angularVelocities[deviceIndex]; + if (_hmdTrackingEnabled){ + const mat4& mat = _nextSimPoseData.poses[deviceIndex]; + const vec3 linearVelocity = _nextSimPoseData.linearVelocities[deviceIndex]; + const vec3 angularVelocity = _nextSimPoseData.angularVelocities[deviceIndex]; - handleHeadPoseEvent(inputCalibrationData, mat, linearVelocity, angularVelocity); + handleHeadPoseEvent(inputCalibrationData, mat, linearVelocity, angularVelocity); + } else { + const mat4& mat = mat4(); + const vec3 zero = vec3(); + + handleHeadPoseEvent(inputCalibrationData, mat, zero, zero); + } } } diff --git a/plugins/openvr/src/ViveControllerManager.h b/plugins/openvr/src/ViveControllerManager.h index 4a7fcaf85e..cbe331feb3 100644 --- a/plugins/openvr/src/ViveControllerManager.h +++ b/plugins/openvr/src/ViveControllerManager.h @@ -113,7 +113,6 @@ private: void emitCalibrationStatus(); void calibrateNextFrame(); - class FilteredStick { public: glm::vec2 process(float deltaTime, const glm::vec2& stick) { @@ -195,6 +194,8 @@ private: bool _overrideHands { false }; mutable std::recursive_mutex _lock; + bool _hmdTrackingEnabled{ false }; + QString configToString(Config config); friend class ViveControllerManager; }; @@ -204,7 +205,10 @@ private: bool _registeredWithInputMapper { false }; bool _modelLoaded { false }; bool _resetMatCalculated { false }; + bool _desktopMode { false }; + bool _hmdDesktopTracking{ false }; + glm::mat4 _resetMat { glm::mat4() }; model::Geometry _modelGeometry; gpu::TexturePointer _texture; From e28f80401f32760006489a1b021489343fee1bb4 Mon Sep 17 00:00:00 2001 From: Menithal Date: Sun, 5 Nov 2017 01:05:35 +0200 Subject: [PATCH 015/329] 21539: Removed debug, added whitespace for format --- plugins/openvr/src/ViveControllerManager.cpp | 2 -- plugins/openvr/src/ViveControllerManager.h | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index 6b24aa0b5b..4e1f8717c6 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -459,8 +459,6 @@ void ViveControllerManager::InputDevice::configureCalibrationSettings(const QJso } _hmdTrackingEnabled = !(hmdDesktopMode && !hmdDesktopTracking); - - qDebug() << "HMD desktop tracking Enabled" << _hmdTrackingEnabled << "-" << hmdDesktopMode << "-" << hmdDesktopTracking << !(hmdDesktopMode && !hmdDesktopTracking); } } diff --git a/plugins/openvr/src/ViveControllerManager.h b/plugins/openvr/src/ViveControllerManager.h index cbe331feb3..6767aafad2 100644 --- a/plugins/openvr/src/ViveControllerManager.h +++ b/plugins/openvr/src/ViveControllerManager.h @@ -194,7 +194,7 @@ private: bool _overrideHands { false }; mutable std::recursive_mutex _lock; - bool _hmdTrackingEnabled{ false }; + bool _hmdTrackingEnabled { false }; QString configToString(Config config); friend class ViveControllerManager; @@ -207,7 +207,7 @@ private: bool _resetMatCalculated { false }; bool _desktopMode { false }; - bool _hmdDesktopTracking{ false }; + bool _hmdDesktopTracking { false }; glm::mat4 _resetMat { glm::mat4() }; model::Geometry _modelGeometry; From fcb3cee0924e1625db7a233c1f158f27dd314a8c Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Sun, 5 Nov 2017 11:48:12 -0800 Subject: [PATCH 016/329] exploring how to to expose occluded/unoccluded outline styles --- libraries/render-utils/src/Outline.slh | 29 +++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/libraries/render-utils/src/Outline.slh b/libraries/render-utils/src/Outline.slh index ac56e4c95c..ad3a670cc4 100644 --- a/libraries/render-utils/src/Outline.slh +++ b/libraries/render-utils/src/Outline.slh @@ -39,6 +39,7 @@ void main(void) { vec2 texCoord0 = varTexCoord0+halfTexel; float outlinedDepth = texture(outlinedDepthMap, texCoord0).x; float intensity = 0.0; + float isOccluded = 0.0; if (outlinedDepth < FAR_Z) { // We're not on the far plane so we are on the outlined object, thus no outline to do! @@ -52,6 +53,7 @@ void main(void) { // Are we occluded? if (sceneDepth < (outlinedDepth-LINEAR_DEPTH_BIAS)) { intensity = params._fillOpacityOccluded; + isOccluded = 1.0; } else { intensity = params._fillOpacityUnoccluded; } @@ -66,6 +68,8 @@ void main(void) { int x; int y; + float sumOutlineDepth = 0; + for (y=0 ; y=0.0 && uv.x<=1.0) { outlinedDepth = texture(outlinedDepthMap, uv).x; - intensity += (outlinedDepth < FAR_Z) ? 1.0 : 0.0; + float touch = (outlinedDepth < FAR_Z) ? 1.0 : 0.0; + //sumOutlineDepth = min(outlinedDepth, sumOutlineDepth); + sumOutlineDepth += (outlinedDepth * touch); + intensity += touch; weight += 1.f; } uv.x += deltaUv.x; @@ -83,15 +90,31 @@ void main(void) { } } + if (intensity > 0) { + sumOutlineDepth /= intensity; + } else { + sumOutlineDepth = FAR_Z; + } + intensity /= weight; if (intensity < OPACITY_EPSILON) { discard; } - intensity = min(1.0, intensity / params._threshold) * params._intensity; + + // But we need to check the scene depth aginst the depth of the outline + float sceneDepth = texture(sceneDepthMap, texCoord0).x; + + // Transform to linear depth for better precision + outlinedDepth = -evalZeyeFromZdb(sumOutlineDepth); + sceneDepth = -evalZeyeFromZdb(sceneDepth); + // Are we occluded? + if (sceneDepth < (outlinedDepth/*-LINEAR_DEPTH_BIAS*/)) { + isOccluded = 1.0; + } } - outFragColor = vec4(params._color.rgb, intensity); + outFragColor = vec4(mix(params._color.rgb, vec3(0.1,1,0.1), isOccluded), intensity); } <@endfunc@> From e145e30049585583eddce26dda755edc3e1f4385 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 6 Nov 2017 22:47:07 -0800 Subject: [PATCH 017/329] Drafting the selection to highlight interface --- .../src/scripting/SelectionScriptingInterface.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/interface/src/scripting/SelectionScriptingInterface.h b/interface/src/scripting/SelectionScriptingInterface.h index d1a372c5c4..1d28f3fdb6 100644 --- a/interface/src/scripting/SelectionScriptingInterface.h +++ b/interface/src/scripting/SelectionScriptingInterface.h @@ -48,6 +48,17 @@ private: }; +class SelectionHighlightStyle { +public: + SelectionHighlightStyle() {} + + bool fromVariantMap(const QVariantMap& properties); + QVariantMap toVariantMap() const; + + + +}; + class SelectionScriptingInterface : public QObject, public Dependency { Q_OBJECT @@ -62,6 +73,10 @@ public: Q_INVOKABLE bool addToSelectedItemsList(const QString& listName, const QString& itemType, const QUuid& id); Q_INVOKABLE bool removeFromSelectedItemsList(const QString& listName, const QString& itemType, const QUuid& id); + Q_INVOKABLE bool enableListHighlight(const QString& listName, const QVariantMap& highlightStyle); + Q_INVOKABLE bool disableListHighlight(const QString& listName); + Q_INVOKABLE QVariantMap getListHighlightStyle(const QString& listName) const; + signals: void selectedItemsListChanged(const QString& listName); From f997ad4628bf95b18f4ced5390adc23f989cab1b Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 7 Nov 2017 16:15:48 -0800 Subject: [PATCH 018/329] changed Wallet from RSA to ECSDA cryto --- interface/src/commerce/Wallet.cpp | 150 ++++++++++++++++-------------- 1 file changed, 79 insertions(+), 71 deletions(-) diff --git a/interface/src/commerce/Wallet.cpp b/interface/src/commerce/Wallet.cpp index 85632ff8f1..8c606f0418 100644 --- a/interface/src/commerce/Wallet.cpp +++ b/interface/src/commerce/Wallet.cpp @@ -32,6 +32,7 @@ #include #include #include +#include // I know, right? But per https://www.openssl.org/docs/faq.html // this avoids OPENSSL_Uplink(00007FF847238000,08): no OPENSSL_Applink @@ -78,18 +79,19 @@ int passwordCallback(char* password, int maxPasswordSize, int rwFlag, void* u) { } } -RSA* readKeys(const char* filename) { +EC_KEY* readKeys(const char* filename) { FILE* fp; - RSA* key = NULL; + EC_KEY *key = NULL; if ((fp = fopen(filename, "rt"))) { // file opened successfully qCDebug(commerce) << "opened key file" << filename; - if ((key = PEM_read_RSAPublicKey(fp, NULL, NULL, NULL))) { + + if ((key = PEM_read_EC_PUBKEY(fp, NULL, NULL, NULL))) { // now read private key qCDebug(commerce) << "read public key"; - if ((key = PEM_read_RSAPrivateKey(fp, &key, passwordCallback, NULL))) { + if ((key = PEM_read_ECPrivateKey(fp, &key, passwordCallback, NULL))) { qCDebug(commerce) << "read private key"; fclose(fp); return key; @@ -137,18 +139,18 @@ bool Wallet::writeBackupInstructions() { return retval; } -bool writeKeys(const char* filename, RSA* keys) { +bool writeKeys(const char* filename, EC_KEY* keys) { FILE* fp; bool retval = false; if ((fp = fopen(filename, "wt"))) { - if (!PEM_write_RSAPublicKey(fp, keys)) { + if (!PEM_write_EC_PUBKEY(fp, keys)) { fclose(fp); qCDebug(commerce) << "failed to write public key"; QFile(QString(filename)).remove(); return retval; } - if (!PEM_write_RSAPrivateKey(fp, keys, EVP_des_ede3_cbc(), NULL, 0, passwordCallback, NULL)) { + if (!PEM_write_ECPrivateKey(fp, keys, EVP_des_ede3_cbc(), NULL, 0, passwordCallback, NULL)) { fclose(fp); qCDebug(commerce) << "failed to write private key"; QFile(QString(filename)).remove(); @@ -170,44 +172,28 @@ bool writeKeys(const char* filename, RSA* keys) { // TODO: we don't really use the private keys returned - we can see how this evolves, but probably // we should just return a list of public keys? // or perhaps return the RSA* instead? -QPair generateRSAKeypair() { - - RSA* keyPair = RSA_new(); - BIGNUM* exponent = BN_new(); +QPair generateECKeypair() { + + EC_KEY* keyPair = EC_KEY_new_by_curve_name(NID_secp256k1); QPair retval; - - const unsigned long RSA_KEY_EXPONENT = 65537; - BN_set_word(exponent, RSA_KEY_EXPONENT); - - // seed the random number generator before we call RSA_generate_key_ex - srand(time(NULL)); - - const int RSA_KEY_BITS = 2048; - - if (!RSA_generate_key_ex(keyPair, RSA_KEY_BITS, exponent, NULL)) { - qCDebug(commerce) << "Error generating 2048-bit RSA Keypair -" << ERR_get_error(); - - // we're going to bust out of here but first we cleanup the BIGNUM - BN_free(exponent); + if (!EC_KEY_generate_key(keyPair)) { + qCDebug(commerce) << "Error generating EC Keypair -" << ERR_get_error(); return retval; } - // we don't need the BIGNUM anymore so clean that up - BN_free(exponent); - // grab the public key and private key from the file unsigned char* publicKeyDER = NULL; - int publicKeyLength = i2d_RSAPublicKey(keyPair, &publicKeyDER); + int publicKeyLength = i2d_EC_PUBKEY(keyPair, &publicKeyDER); unsigned char* privateKeyDER = NULL; - int privateKeyLength = i2d_RSAPrivateKey(keyPair, &privateKeyDER); + int privateKeyLength = i2d_ECPrivateKey(keyPair, &privateKeyDER); if (publicKeyLength <= 0 || privateKeyLength <= 0) { qCDebug(commerce) << "Error getting DER public or private key from RSA struct -" << ERR_get_error(); // cleanup the RSA struct - RSA_free(keyPair); + EC_KEY_free(keyPair); // cleanup the public and private key DER data, if required if (publicKeyLength > 0) { @@ -227,7 +213,7 @@ QPair generateRSAKeypair() { return retval; } - RSA_free(keyPair); + EC_KEY_free(keyPair); // prepare the return values. TODO: Fix this - we probably don't really even want the // private key at all (better to read it when we need it?). Or maybe we do, when we have @@ -245,18 +231,18 @@ QPair generateRSAKeypair() { // the public key can just go into a byte array QByteArray readPublicKey(const char* filename) { FILE* fp; - RSA* key = NULL; + EC_KEY* key = NULL; if ((fp = fopen(filename, "r"))) { // file opened successfully qCDebug(commerce) << "opened key file" << filename; - if ((key = PEM_read_RSAPublicKey(fp, NULL, NULL, NULL))) { + if ((key = PEM_read_EC_PUBKEY(fp, NULL, NULL, NULL))) { // file read successfully unsigned char* publicKeyDER = NULL; - int publicKeyLength = i2d_RSAPublicKey(key, &publicKeyDER); + int publicKeyLength = i2d_EC_PUBKEY(key, &publicKeyDER); // TODO: check for 0 length? // cleanup - RSA_free(key); + EC_KEY_free(key); fclose(fp); qCDebug(commerce) << "parsed public key file successfully"; @@ -274,15 +260,15 @@ QByteArray readPublicKey(const char* filename) { return QByteArray(); } -// the private key should be read/copied into heap memory. For now, we need the RSA struct +// the private key should be read/copied into heap memory. For now, we need the EC_KEY struct // so I'll return that. Note we need to RSA_free(key) later!!! -RSA* readPrivateKey(const char* filename) { +EC_KEY* readPrivateKey(const char* filename) { FILE* fp; - RSA* key = NULL; + EC_KEY* key = NULL; if ((fp = fopen(filename, "r"))) { // file opened successfully qCDebug(commerce) << "opened key file" << filename; - if ((key = PEM_read_RSAPrivateKey(fp, &key, passwordCallback, NULL))) { + if ((key = PEM_read_ECPrivateKey(fp, &key, passwordCallback, NULL))) { qCDebug(commerce) << "parsed private key file successfully"; } else { @@ -509,7 +495,7 @@ bool Wallet::walletIsAuthenticatedWithPassphrase() { if (publicKey.size() > 0) { if (auto key = readPrivateKey(keyFilePath().toStdString().c_str())) { - RSA_free(key); + EC_KEY_free(key); // be sure to add the public key so we don't do this over and over _publicKeys.push_back(publicKey.toBase64()); @@ -525,7 +511,7 @@ bool Wallet::generateKeyPair() { initialize(); qCInfo(commerce) << "Generating keypair."; - auto keyPair = generateRSAKeypair(); + auto keyPair = generateECKeypair(); writeBackupInstructions(); @@ -558,22 +544,30 @@ QStringList Wallet::listPublicKeys() { // encoded string representing the signature (suitable for http, etc...) QString Wallet::signWithKey(const QByteArray& text, const QString& key) { qCInfo(commerce) << "Signing text."; - RSA* rsaPrivateKey = NULL; - if ((rsaPrivateKey = readPrivateKey(keyFilePath().toStdString().c_str()))) { - QByteArray signature(RSA_size(rsaPrivateKey), 0); + EC_KEY* ecPrivateKey = NULL; + if ((ecPrivateKey = readPrivateKey(keyFilePath().toStdString().c_str()))) { + QByteArray signature(ECDSA_size(ecPrivateKey), 0); unsigned int signatureBytes = 0; QByteArray hashedPlaintext = QCryptographicHash::hash(text, QCryptographicHash::Sha256); - int encryptReturn = RSA_sign(NID_sha256, - reinterpret_cast(hashedPlaintext.constData()), - hashedPlaintext.size(), - reinterpret_cast(signature.data()), - &signatureBytes, - rsaPrivateKey); + + int encryptReturn = ECDSA_sign(0, + reinterpret_cast(hashedPlaintext.constData()), + hashedPlaintext.size(), + reinterpret_cast(signature.data()), + &signatureBytes, ecPrivateKey); + + //Previous pattern, retained by ECDSA_sign + //int encryptReturn = RSA_sign(NID_sha256, + // reinterpret_cast(hashedPlaintext.constData()), + // hashedPlaintext.size(), + // reinterpret_cast(signature.data()), + // &signatureBytes, + // rsaPrivateKey); // free the private key RSA struct now that we are done with it - RSA_free(rsaPrivateKey); + EC_KEY_free(ecPrivateKey); if (encryptReturn != -1) { return signature.toBase64(); @@ -674,7 +668,7 @@ void Wallet::reset() { keyFile.remove(); } bool Wallet::writeWallet(const QString& newPassphrase) { - RSA* keys = readKeys(keyFilePath().toStdString().c_str()); + EC_KEY* keys = readKeys(keyFilePath().toStdString().c_str()); if (keys) { // we read successfully, so now write to a new temp file QString tempFileName = QString("%1.%2").arg(keyFilePath(), QString("temp")); @@ -720,18 +714,23 @@ bool Wallet::changePassphrase(const QString& newPassphrase) { void Wallet::handleChallengeOwnershipPacket(QSharedPointer packet, SharedNodePointer sendingNode) { auto nodeList = DependencyManager::get(); + //With EC keys, we receive a nonce from the metaverse server, which is signed + //here with the private key and returned. Verification is done at server. + bool challengeOriginatedFromClient = packet->getType() == PacketType::ChallengeOwnershipRequest; - unsigned char decryptedText[64]; + //unsigned char decryptedText[64]; + int decryptionStatus; int certIDByteArraySize; int encryptedTextByteArraySize; int challengingNodeUUIDByteArraySize; packet->readPrimitive(&certIDByteArraySize); - packet->readPrimitive(&encryptedTextByteArraySize); + packet->readPrimitive(&encryptedTextByteArraySize); //rerturns a cast char*, size if (challengeOriginatedFromClient) { packet->readPrimitive(&challengingNodeUUIDByteArraySize); } + //"encryptedText" is now a series of random bytes, a nonce QByteArray certID = packet->read(certIDByteArraySize); QByteArray encryptedText = packet->read(encryptedTextByteArraySize); QByteArray challengingNodeUUID; @@ -739,25 +738,34 @@ void Wallet::handleChallengeOwnershipPacket(QSharedPointer pack challengingNodeUUID = packet->read(challengingNodeUUIDByteArraySize); } - RSA* rsa = readKeys(keyFilePath().toStdString().c_str()); - int decryptionStatus = -1; + EC_KEY* ec = readKeys(keyFilePath().toStdString().c_str()); + QString sig; + // int decryptionStatus = -1; - if (rsa) { + if (ec) { ERR_clear_error(); - decryptionStatus = RSA_private_decrypt(encryptedTextByteArraySize, - reinterpret_cast(encryptedText.constData()), - decryptedText, - rsa, - RSA_PKCS1_OAEP_PADDING); + sig = signWithKey(encryptedText, ""); //base64 signature, QByteArray cast + //upon return to QString - RSA_free(rsa); + // decryptionStatus = RSA_private_decrypt(encryptedTextByteArraySize, + // reinterpret_cast(encryptedText.constData()), + // decryptedText, //unsigned char* + // ec, + // RSA_PKCS1_OAEP_PADDING); + + EC_KEY_free(ec); + decryptionStatus = 1; } else { - qCDebug(commerce) << "During entity ownership challenge, creating the RSA object failed."; + qCDebug(commerce) << "During entity ownership challenge, creating the EC-signed nonce failed."; + decryptionStatus = -1; } + QByteArray ba = sig.toLocal8Bit(); + const char *sigChar = ba.data(); + QByteArray decryptedTextByteArray; if (decryptionStatus > -1) { - decryptedTextByteArray = QByteArray(reinterpret_cast(decryptedText), decryptionStatus); + decryptedTextByteArray = QByteArray(sigChar, decryptionStatus); } int decryptedTextByteArraySize = decryptedTextByteArray.size(); int certIDSize = certID.size(); @@ -774,7 +782,7 @@ void Wallet::handleChallengeOwnershipPacket(QSharedPointer pack decryptedTextPacket->write(decryptedTextByteArray); decryptedTextPacket->write(challengingNodeUUID); - qCDebug(commerce) << "Sending ChallengeOwnershipReply Packet containing decrypted text" << decryptedTextByteArray << "for CertID" << certID; + qCDebug(commerce) << "Sending ChallengeOwnershipReply Packet containing signed text" << decryptedTextByteArray << "for CertID" << certID; nodeList->sendPacket(std::move(decryptedTextPacket), *sendingNode); } else { @@ -785,17 +793,17 @@ void Wallet::handleChallengeOwnershipPacket(QSharedPointer pack decryptedTextPacket->write(certID); decryptedTextPacket->write(decryptedTextByteArray); - qCDebug(commerce) << "Sending ChallengeOwnership Packet containing decrypted text" << decryptedTextByteArray << "for CertID" << certID; + qCDebug(commerce) << "Sending ChallengeOwnership Packet containing signed text" << decryptedTextByteArray << "for CertID" << certID; nodeList->sendPacket(std::move(decryptedTextPacket), *sendingNode); } if (decryptionStatus == -1) { - qCDebug(commerce) << "During entity ownership challenge, decrypting the encrypted text failed."; + qCDebug(commerce) << "During entity ownership challenge, signing the text failed."; long error = ERR_get_error(); if (error != 0) { const char* error_str = ERR_error_string(error, NULL); - qCWarning(entities) << "RSA error:" << error_str; + qCWarning(entities) << "EC error:" << error_str; } } } @@ -818,4 +826,4 @@ void Wallet::getWalletStatus() { walletScriptingInterface->setWalletStatus(status); return; } -} +} \ No newline at end of file From c9e69c23a358c46dc66d6597b23e6a997b3f36df Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Fri, 10 Nov 2017 15:33:28 -0800 Subject: [PATCH 019/329] Commented out Keylight Attenuation from UI. --- scripts/system/html/entityProperties.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/html/entityProperties.html b/scripts/system/html/entityProperties.html index 9453b476ee..8b2a088d83 100644 --- a/scripts/system/html/entityProperties.html +++ b/scripts/system/html/entityProperties.html @@ -623,7 +623,7 @@ -
+
From 3101663b7be5157be3ccdf48f7b24c08b9aae20d Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Fri, 10 Nov 2017 18:55:07 -0800 Subject: [PATCH 020/329] In the beginning. --- tools/CMakeLists.txt | 3 +++ tools/auto-tester/CMakeLists.txt | 5 ++++ tools/auto-tester/src/autoTester.h | 37 ++++++++++++++++++++++++++++++ tools/auto-tester/src/main.cpp | 21 +++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 tools/auto-tester/CMakeLists.txt create mode 100644 tools/auto-tester/src/autoTester.h create mode 100644 tools/auto-tester/src/main.cpp diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index cf11ef9e7a..ba795480be 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -23,4 +23,7 @@ if (BUILD_TOOLS) add_subdirectory(oven) set_target_properties(oven PROPERTIES FOLDER "Tools") + + add_subdirectory(auto-tester) + set_target_properties(auto-tester PROPERTIES FOLDER "Tools") endif() diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt new file mode 100644 index 0000000000..b081c8b9f1 --- /dev/null +++ b/tools/auto-tester/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.9) + +project (auto-tester) + +add_executable(auto-tester src/main.cpp) \ No newline at end of file diff --git a/tools/auto-tester/src/autoTester.h b/tools/auto-tester/src/autoTester.h new file mode 100644 index 0000000000..9c1ebfd53c --- /dev/null +++ b/tools/auto-tester/src/autoTester.h @@ -0,0 +1,37 @@ +// +// AutoTester.h +// zone/ambientLightInheritence +// +// Created by Nissim Hadar on 2 Nov 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_AutoTester_h +#define hifi_AutoTester_h + +////#include +////#include "ui_autoTester.h" +////#include "Test.h" +//// +////class AutoTester : public QMainWindow +////{ +//// Q_OBJECT +//// +////public: +//// AutoTester(QWidget *parent = Q_NULLPTR); +//// +////private slots: +//// void on_evaluateTestsButton_clicked(); +//// void on_createTestButton_clicked(); +//// void on_closeButton_clicked(); +//// +////private: +//// Ui::AutoTesterClass ui; +//// +//// Test test; +////}; + +#endif // hifi_AutoTester_h \ No newline at end of file diff --git a/tools/auto-tester/src/main.cpp b/tools/auto-tester/src/main.cpp new file mode 100644 index 0000000000..9bc9892835 --- /dev/null +++ b/tools/auto-tester/src/main.cpp @@ -0,0 +1,21 @@ +// +// Test.cpp +// +// Created by Nissim Hadar on 2 Nov 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include +#include "autoTester.h" + +int main(int argc, char *argv[]) +{ +//// QApplication application(argc, argv); + +//// AutoTester autoTester; +//// autoTester.show(); + +//// return application.exec(); +} From 8433374fb6b7a5f821c9a4459ea58cff4cd35c7e Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Fri, 10 Nov 2017 20:24:11 -0800 Subject: [PATCH 021/329] CMake includes Qt headers --- tools/CMakeLists.txt | 6 +++--- tools/auto-tester/CMakeLists.txt | 6 ++---- tools/auto-tester/src/autoTester.h | 2 +- tools/auto-tester/src/main.cpp | 2 +- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index ba795480be..34286b15bd 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -2,6 +2,9 @@ add_subdirectory(scribe) set_target_properties(scribe PROPERTIES FOLDER "Tools") +add_subdirectory(auto-tester) +set_target_properties(auto-tester PROPERTIES FOLDER "Tools") + if (BUILD_TOOLS) add_subdirectory(udt-test) set_target_properties(udt-test PROPERTIES FOLDER "Tools") @@ -23,7 +26,4 @@ if (BUILD_TOOLS) add_subdirectory(oven) set_target_properties(oven PROPERTIES FOLDER "Tools") - - add_subdirectory(auto-tester) - set_target_properties(auto-tester PROPERTIES FOLDER "Tools") endif() diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt index b081c8b9f1..4b6d9aad19 100644 --- a/tools/auto-tester/CMakeLists.txt +++ b/tools/auto-tester/CMakeLists.txt @@ -1,5 +1,3 @@ -cmake_minimum_required(VERSION 3.9) +set(TARGET_NAME auto-tester) -project (auto-tester) - -add_executable(auto-tester src/main.cpp) \ No newline at end of file +setup_hifi_project(Core Widgets) diff --git a/tools/auto-tester/src/autoTester.h b/tools/auto-tester/src/autoTester.h index 9c1ebfd53c..edb6eb1771 100644 --- a/tools/auto-tester/src/autoTester.h +++ b/tools/auto-tester/src/autoTester.h @@ -12,7 +12,7 @@ #ifndef hifi_AutoTester_h #define hifi_AutoTester_h -////#include +#include ////#include "ui_autoTester.h" ////#include "Test.h" //// diff --git a/tools/auto-tester/src/main.cpp b/tools/auto-tester/src/main.cpp index 9bc9892835..774ae0a99a 100644 --- a/tools/auto-tester/src/main.cpp +++ b/tools/auto-tester/src/main.cpp @@ -12,7 +12,7 @@ int main(int argc, char *argv[]) { -//// QApplication application(argc, argv); + QApplication application(argc, argv); //// AutoTester autoTester; //// autoTester.show(); From 3457e1de5d7f796991e5e9ef3724b23de62fd707 Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Sat, 11 Nov 2017 13:19:57 -0800 Subject: [PATCH 022/329] WIP. --- tools/auto-tester/CMakeLists.txt | 12 +++- tools/auto-tester/src/autoTester.h | 3 +- tools/auto-tester/src/autoTester.qrc | 4 ++ tools/auto-tester/src/ui/autoTester.ui | 82 ++++++++++++++++++++++++++ 4 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 tools/auto-tester/src/autoTester.qrc create mode 100644 tools/auto-tester/src/ui/autoTester.ui diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt index 4b6d9aad19..832133c284 100644 --- a/tools/auto-tester/CMakeLists.txt +++ b/tools/auto-tester/CMakeLists.txt @@ -1,3 +1,13 @@ set(TARGET_NAME auto-tester) -setup_hifi_project(Core Widgets) +setup_hifi_project(Widgets) + +# grab the ui files in ui +file (GLOB_RECURSE QT_UI_FILES src/ui/*.ui) +source_group("UI Files" FILES ${QT_UI_FILES}) + +# have qt5 wrap them and generate the appropriate header files +qt5_wrap_ui(QT_UI_HEADERS "${QT_UI_FILES}") + +# add them to the interface source files +set(INTERFACE_SRCS ${INTERFACE_SRCS} "${QT_UI_HEADERS}") diff --git a/tools/auto-tester/src/autoTester.h b/tools/auto-tester/src/autoTester.h index edb6eb1771..a03aa3e053 100644 --- a/tools/auto-tester/src/autoTester.h +++ b/tools/auto-tester/src/autoTester.h @@ -8,12 +8,11 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // - #ifndef hifi_AutoTester_h #define hifi_AutoTester_h #include -////#include "ui_autoTester.h" +#include "ui_autoTester.h" ////#include "Test.h" //// ////class AutoTester : public QMainWindow diff --git a/tools/auto-tester/src/autoTester.qrc b/tools/auto-tester/src/autoTester.qrc new file mode 100644 index 0000000000..22fb3c10b0 --- /dev/null +++ b/tools/auto-tester/src/autoTester.qrc @@ -0,0 +1,4 @@ + + + + diff --git a/tools/auto-tester/src/ui/autoTester.ui b/tools/auto-tester/src/ui/autoTester.ui new file mode 100644 index 0000000000..26831c6976 --- /dev/null +++ b/tools/auto-tester/src/ui/autoTester.ui @@ -0,0 +1,82 @@ + + + AutoTesterClass + + + + 0 + 0 + 261 + 330 + + + + autoTester + + + + + + 80 + 210 + 100 + 23 + + + + Close + + + + + + 80 + 160 + 100 + 23 + + + + Create Test + + + + + + 80 + 20 + 100 + 23 + + + + Evaulate Tests + + + + + + + 0 + 0 + 261 + 21 + + + + + + TopToolBarArea + + + false + + + + + + + + + + From 7a0d188149d92c969fde559df7bca583c2a434cc Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Sat, 11 Nov 2017 18:10:47 -0800 Subject: [PATCH 023/329] WIP. --- tools/auto-tester/CMakeLists.txt | 2 +- tools/auto-tester/src/AutoTester.cpp | 32 ++++ tools/auto-tester/src/MismatchWindow.cpp | 51 +++++++ tools/auto-tester/src/MismatchWindow.h | 38 +++++ tools/auto-tester/src/Test.cpp | 163 +++++++++++++++++++++ tools/auto-tester/src/Test.h | 46 ++++++ tools/auto-tester/src/autoTester.h | 38 ++--- tools/auto-tester/src/common.h | 37 +++++ tools/auto-tester/src/main.cpp | 6 +- tools/auto-tester/src/ui/MismatchWindow.ui | 157 ++++++++++++++++++++ 10 files changed, 547 insertions(+), 23 deletions(-) create mode 100644 tools/auto-tester/src/AutoTester.cpp create mode 100644 tools/auto-tester/src/MismatchWindow.cpp create mode 100644 tools/auto-tester/src/MismatchWindow.h create mode 100644 tools/auto-tester/src/Test.cpp create mode 100644 tools/auto-tester/src/Test.h create mode 100644 tools/auto-tester/src/common.h create mode 100644 tools/auto-tester/src/ui/MismatchWindow.ui diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt index 832133c284..e59cb192b1 100644 --- a/tools/auto-tester/CMakeLists.txt +++ b/tools/auto-tester/CMakeLists.txt @@ -10,4 +10,4 @@ source_group("UI Files" FILES ${QT_UI_FILES}) qt5_wrap_ui(QT_UI_HEADERS "${QT_UI_FILES}") # add them to the interface source files -set(INTERFACE_SRCS ${INTERFACE_SRCS} "${QT_UI_HEADERS}") +##set(INTERFACE_SRCS ${INTERFACE_SRCS} "${QT_UI_HEADERS}") diff --git a/tools/auto-tester/src/AutoTester.cpp b/tools/auto-tester/src/AutoTester.cpp new file mode 100644 index 0000000000..5117f78ce5 --- /dev/null +++ b/tools/auto-tester/src/AutoTester.cpp @@ -0,0 +1,32 @@ +// +// autoTester.cpp +// zone/ambientLightInheritence +// +// Created by Nissim Hadar on 2 Nov 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "AutoTester.h" + +AutoTester::AutoTester(QWidget *parent) + : QMainWindow(parent) +{ + ui.setupUi(this); +} + +void AutoTester::on_closeButton_clicked() +{ + exit(0); +} + +void AutoTester::on_evaluateTestsButton_clicked() +{ + test.evaluateTests(); +} + +void AutoTester::on_createTestButton_clicked() +{ + test.createTest(); +} diff --git a/tools/auto-tester/src/MismatchWindow.cpp b/tools/auto-tester/src/MismatchWindow.cpp new file mode 100644 index 0000000000..43cf1c2c30 --- /dev/null +++ b/tools/auto-tester/src/MismatchWindow.cpp @@ -0,0 +1,51 @@ +// +// MismatchWindow.cpp +// +// Created by Nissim Hadar on 9 Nov 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "MismatchWindow.h" + +#include + +MismatchWindow::MismatchWindow(QWidget *parent) + : QDialog(parent) +{ + setupUi(this); + + expectedImage->setScaledContents(true); + resultImage->setScaledContents(true); +} + +void MismatchWindow::setTestFailure(TestFailure testFailure) { + errorLabel->setText("Error: " + QString::number((int)testFailure._error)); + + imagePath->setText("Path to test: " + testFailure._pathname); + + expectedFilename->setText(testFailure._expectedImageFilename); + expectedImage->setPixmap(QPixmap(testFailure._pathname + testFailure._expectedImageFilename)); + + resultFilename->setText(testFailure._resultImageFilename); + resultImage->setPixmap(QPixmap(testFailure._pathname + testFailure._resultImageFilename)); +} + +void MismatchWindow::on_passTestButton_clicked() +{ + _userResponse = USER_RESPONSE_PASS; + close(); +} + +void MismatchWindow::on_failTestButton_clicked() +{ + _userResponse = USE_RESPONSE_FAIL; + close(); +} + +void MismatchWindow::on_abortTestsButton_clicked() +{ + _userResponse = USER_RESPONSE_ABORT; + close(); +} diff --git a/tools/auto-tester/src/MismatchWindow.h b/tools/auto-tester/src/MismatchWindow.h new file mode 100644 index 0000000000..7aa173cc36 --- /dev/null +++ b/tools/auto-tester/src/MismatchWindow.h @@ -0,0 +1,38 @@ +// +// MismatchWindow.cpp +// +// Created by Nissim Hadar on 9 Nov 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#ifndef hifi_MismatchWindow_h +#define hifi_MismatchWindow_h + +#include "ui_MismatchWindow.h" + +#include "common.h" + +class MismatchWindow : public QDialog, public Ui::MismatchWindow +{ + Q_OBJECT + +public: + MismatchWindow(QWidget *parent = Q_NULLPTR); + + void setTestFailure(TestFailure testFailure); + + UserResponse getUserResponse() { return _userResponse; } + +private slots: + void on_passTestButton_clicked(); + void on_failTestButton_clicked(); + void on_abortTestsButton_clicked(); + +private: + UserResponse _userResponse{ USER_RESPONSE_INVALID }; +}; + + +#endif // hifi_MismatchWindow_h diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp new file mode 100644 index 0000000000..e695ca37c3 --- /dev/null +++ b/tools/auto-tester/src/Test.cpp @@ -0,0 +1,163 @@ +// +// Test.cpp +// +// Created by Nissim Hadar on 2 Nov 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +// Images are compared using the ImagMagick command line tool magick.exe +// A number of comparison metrics are available, including: +// AE Absolute error count of the number of different pixels (0=equal) +// +// DSSIM Stuctural dissimilarity index +// +// PAE Peak Absolute error of any one pixel +// +// PSNR Peak Signal to Noise Ratio The ratio of mean square difference to the maximum mean square +// that can exist between any two images, expressed as a decibel value. +// The higher the PSNR the closer the closer the images are, with +// a maximum difference occurring at 1. A PSNR of 20 means +// differences are 1 / 100 of maximum. +// +// MAE Mean Absolute Error average channel error distance +// +// MSE Mean Squared Error average squared error distance +// +// RMSE squareRoot Mean Error sqrt(MSE) +// +#include "Test.h" + +#include +#include + +Test::Test() { + snapshotFilenameFormat = QRegularExpression("hifi-snap-by-.+-on-\\d\\d\\d\\d-\\d\\d-\\d\\d_\\d\\d-\\d\\d-\\d\\d.jpg"); + + expectedImageFilenameFormat = QRegularExpression("ExpectedImage_\\d+.jpg"); + + mismatchWindow.setModal(true); +} + +void Test::evaluateTests() { + createListOfAllJPEGimagesInDirectory(); + + // Separate images into two lists. The first is the expected images, the second is the test results + // Images that are in the wrong format are ignored. + QStringList expectedImages; + QStringList resultImages; + foreach(QString currentFilename, sortedImageFilenames) { + QString fullCurrentFilename = pathToImageDirectory + "/" + currentFilename; + if (isInExpectedImageFilenameFormat(currentFilename)) { + expectedImages << fullCurrentFilename; + } else if (isInSnapshotFilenameFormat(currentFilename)) { + resultImages << fullCurrentFilename; + } + } + + // The number of images in each list should be identical + if (expectedImages.length() != resultImages.length()) { + messageBox.critical(0, + "Test failed", + "Found " + QString::number(resultImages.length()) + " images in directory" + + "\nExpected to find " + QString::number(expectedImages.length()) + " images"); + + exit(-1); + } + + // Now loop over both lists and compare each pair of images + // Quit loop if user has aborted due to a failed test. + const float THRESHOLD{ 10.0f }; + bool success{ true }; + bool keepOn{ true }; + for (int i = 0; keepOn && i < expectedImages.length(); ++i) { + QString diffFilename = "hifi_autoTest_diff.txt"; + QString command = "magick.exe compare -metric MAE " + expectedImages[i] + " " + resultImages[i] + " null: 2>" + diffFilename; + system(command.toStdString().c_str()); + + QFile file(diffFilename); + if (!file.open(QIODevice::ReadOnly)) { + messageBox.critical(0, "error", file.errorString()); + } + + // First value on line is the comparison result + QTextStream in(&file); + QString line = in.readLine(); + QStringList tokens = line.split(' '); + float error = tokens[0].toFloat(); + + if (error > THRESHOLD) { + mismatchWindow.setTestFailure(TestFailure{ + error, // value of the error (float) + expectedImages[i].left(expectedImages[i].lastIndexOf("/") + 1), // path to the test (including trailing / + QFileInfo(expectedImages[i].toStdString().c_str()).fileName(), // filename of expected image + QFileInfo(resultImages[i].toStdString().c_str()).fileName() // filename of result image + }); + + mismatchWindow.exec(); + + switch (mismatchWindow.getUserResponse()) { + case USER_RESPONSE_PASS: + break; + case USE_RESPONSE_FAIL: + success = false; + break; + case USER_RESPONSE_ABORT: + keepOn = false; + success = false; + break; + default: + assert(false); + } + } + } + + if (success) { + messageBox.information(0, "Success", "All images are as expected"); + } else { + messageBox.information(0, "Failure", "One or more images are not as expected"); + } +} + +void Test::createTest() { + // Rename files sequentially, as ExpectedResult_1.jpeg, ExpectedResult_2.jpg and so on + // Any existing expected result images will be deleted + createListOfAllJPEGimagesInDirectory(); + + int i = 1; + foreach (QString currentFilename, sortedImageFilenames) { + QString fullCurrentFilename = pathToImageDirectory + "/" + currentFilename; + if (isInExpectedImageFilenameFormat(currentFilename)) { + if (!QFile::remove(fullCurrentFilename)) { + messageBox.critical(0, "Error", "Could not delete existing file: " + currentFilename + "\nTest creation aborted"); + exit(-1); + } + } else if (isInSnapshotFilenameFormat(currentFilename)) { + QString newFilename = "ExpectedImage_" + QString::number(i) + ".jpg"; + QString fullNewFileName = pathToImageDirectory + "/" + newFilename; + + imageDirectory.rename(fullCurrentFilename, newFilename); + ++i; + } + } +} + +void Test::createListOfAllJPEGimagesInDirectory() { + // get list of JPEG images in folder, sorted by name + pathToImageDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder containing the test images", ".", QFileDialog::ShowDirsOnly); + + imageDirectory = QDir(pathToImageDirectory); + QStringList nameFilters; + nameFilters << "*.jpg"; + + sortedImageFilenames = imageDirectory.entryList(nameFilters, QDir::Files, QDir::Name); +} + +bool Test::isInSnapshotFilenameFormat(QString filename) { + return (snapshotFilenameFormat.match(filename).hasMatch()); +} + +bool Test::isInExpectedImageFilenameFormat(QString filename) { + return (expectedImageFilenameFormat.match(filename).hasMatch()); +} \ No newline at end of file diff --git a/tools/auto-tester/src/Test.h b/tools/auto-tester/src/Test.h new file mode 100644 index 0000000000..5f63c71399 --- /dev/null +++ b/tools/auto-tester/src/Test.h @@ -0,0 +1,46 @@ +// +// Test.h +// zone/ambientLightInheritence +// +// Created by Nissim Hadar on 2 Nov 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_test_h +#define hifi_test_h + +#include +#include +#include + +#include "MismatchWindow.h" + +class Test { +public: + Test(); + + void evaluateTests(); + void createTest(); + + void createListOfAllJPEGimagesInDirectory(); + + bool isInSnapshotFilenameFormat(QString filename); + bool isInExpectedImageFilenameFormat(QString filename); + +private: + QMessageBox messageBox; + + QString pathToImageDirectory; + QDir imageDirectory; + QStringList sortedImageFilenames; + + QRegularExpression snapshotFilenameFormat; + QRegularExpression expectedImageFilenameFormat; + + MismatchWindow mismatchWindow; +}; + +#endif // hifi_test_h diff --git a/tools/auto-tester/src/autoTester.h b/tools/auto-tester/src/autoTester.h index a03aa3e053..245937a5c7 100644 --- a/tools/auto-tester/src/autoTester.h +++ b/tools/auto-tester/src/autoTester.h @@ -13,24 +13,24 @@ #include #include "ui_autoTester.h" -////#include "Test.h" -//// -////class AutoTester : public QMainWindow -////{ -//// Q_OBJECT -//// -////public: -//// AutoTester(QWidget *parent = Q_NULLPTR); -//// -////private slots: -//// void on_evaluateTestsButton_clicked(); -//// void on_createTestButton_clicked(); -//// void on_closeButton_clicked(); -//// -////private: -//// Ui::AutoTesterClass ui; -//// -//// Test test; -////}; +#include "Test.h" + +class AutoTester : public QMainWindow +{ + Q_OBJECT + +public: + AutoTester(QWidget *parent = Q_NULLPTR); + +private slots: + void on_evaluateTestsButton_clicked(); + void on_createTestButton_clicked(); + void on_closeButton_clicked(); + +private: + Ui::AutoTesterClass ui; + + Test test; +}; #endif // hifi_AutoTester_h \ No newline at end of file diff --git a/tools/auto-tester/src/common.h b/tools/auto-tester/src/common.h new file mode 100644 index 0000000000..cb2a023c37 --- /dev/null +++ b/tools/auto-tester/src/common.h @@ -0,0 +1,37 @@ +// +// common.h +// +// Created by Nissim Hadar on 10 Nov 2017. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#ifndef hifi_common_h +#define hifi_common_h + +#include + +class TestFailure { +public: + TestFailure(float error, QString pathname, QString expectedImageFilename, QString resultImageFilename) { + _error = error; + _pathname = pathname; + _expectedImageFilename = expectedImageFilename; + _resultImageFilename = resultImageFilename; + } + + float _error; + QString _pathname; + QString _expectedImageFilename; + QString _resultImageFilename; +}; + +enum UserResponse { + USER_RESPONSE_INVALID, + USER_RESPONSE_PASS, + USE_RESPONSE_FAIL, + USER_RESPONSE_ABORT +}; + +#endif // hifi_common_h diff --git a/tools/auto-tester/src/main.cpp b/tools/auto-tester/src/main.cpp index 774ae0a99a..d8b23f5342 100644 --- a/tools/auto-tester/src/main.cpp +++ b/tools/auto-tester/src/main.cpp @@ -14,8 +14,8 @@ int main(int argc, char *argv[]) { QApplication application(argc, argv); -//// AutoTester autoTester; -//// autoTester.show(); + AutoTester autoTester; + autoTester.show(); -//// return application.exec(); + return application.exec(); } diff --git a/tools/auto-tester/src/ui/MismatchWindow.ui b/tools/auto-tester/src/ui/MismatchWindow.ui new file mode 100644 index 0000000000..ab3a8d57c8 --- /dev/null +++ b/tools/auto-tester/src/ui/MismatchWindow.ui @@ -0,0 +1,157 @@ + + + MismatchWindow + + + + 0 + 0 + 1585 + 694 + + + + MismatchWindow + + + + + 20 + 170 + 720 + 362 + + + + expected image + + + + + + 760 + 170 + 720 + 362 + + + + result image + + + + + + 760 + 90 + 800 + 28 + + + + + 16 + + + + result image filename + + + + + + 40 + 90 + 700 + 28 + + + + + 16 + + + + expected image filename + + + + + + 40 + 30 + 1200 + 28 + + + + + 16 + + + + image path + + + + + + 30 + 600 + 75 + 23 + + + + Pass + + + + + + 330 + 600 + 75 + 23 + + + + Fail + + + + + + 630 + 600 + 75 + 23 + + + + Abort Tests + + + + + + 960 + 600 + 181 + 28 + + + + + 16 + + + + error + + + + + + + From eaa51ebe9d5b3239ec09c3ed1f4a285f2bd61d60 Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Sun, 12 Nov 2017 11:27:24 -0800 Subject: [PATCH 024/329] WIP. --- tools/auto-tester/CMakeLists.txt | 18 +++++++++++++++--- tools/auto-tester/src/Test.h | 2 +- tools/auto-tester/src/main.cpp | 2 +- tools/auto-tester/src/{ => ui}/AutoTester.cpp | 0 .../src/{ => ui}/MismatchWindow.cpp | 0 .../auto-tester/src/{ => ui}/MismatchWindow.h | 2 +- tools/auto-tester/src/{ => ui}/autoTester.h | 2 +- .../auto-tester/{src => }/ui/MismatchWindow.ui | 0 tools/auto-tester/{src => }/ui/autoTester.ui | 0 9 files changed, 19 insertions(+), 7 deletions(-) rename tools/auto-tester/src/{ => ui}/AutoTester.cpp (100%) rename tools/auto-tester/src/{ => ui}/MismatchWindow.cpp (100%) rename tools/auto-tester/src/{ => ui}/MismatchWindow.h (97%) rename tools/auto-tester/src/{ => ui}/autoTester.h (97%) rename tools/auto-tester/{src => }/ui/MismatchWindow.ui (100%) rename tools/auto-tester/{src => }/ui/autoTester.ui (100%) diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt index e59cb192b1..0f915b8121 100644 --- a/tools/auto-tester/CMakeLists.txt +++ b/tools/auto-tester/CMakeLists.txt @@ -1,13 +1,25 @@ set(TARGET_NAME auto-tester) setup_hifi_project(Widgets) +link_hifi_libraries() -# grab the ui files in ui -file (GLOB_RECURSE QT_UI_FILES src/ui/*.ui) +# grab the implementation and header files from src dirs +file(GLOB_RECURSE INTERFACE_SRCS "src/*.cpp" "src/*.h") +GroupSources("src") + +find_package( + Qt5 COMPONENTS + Gui Multimedia Network OpenGL Qml Quick Script Svg + ${PLATFORM_QT_COMPONENTS} + WebChannel WebSockets +) + +# grab the ui files in resources/ui +file (GLOB_RECURSE QT_UI_FILES ui/*.ui) source_group("UI Files" FILES ${QT_UI_FILES}) # have qt5 wrap them and generate the appropriate header files qt5_wrap_ui(QT_UI_HEADERS "${QT_UI_FILES}") # add them to the interface source files -##set(INTERFACE_SRCS ${INTERFACE_SRCS} "${QT_UI_HEADERS}") +set(INTERFACE_SRCS ${INTERFACE_SRCS} "${QT_UI_HEADERS}" "${QT_RESOURCES}") diff --git a/tools/auto-tester/src/Test.h b/tools/auto-tester/src/Test.h index 5f63c71399..ab1c164671 100644 --- a/tools/auto-tester/src/Test.h +++ b/tools/auto-tester/src/Test.h @@ -16,7 +16,7 @@ #include #include -#include "MismatchWindow.h" +#include "ui/MismatchWindow.h" class Test { public: diff --git a/tools/auto-tester/src/main.cpp b/tools/auto-tester/src/main.cpp index d8b23f5342..880741f172 100644 --- a/tools/auto-tester/src/main.cpp +++ b/tools/auto-tester/src/main.cpp @@ -8,7 +8,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #include -#include "autoTester.h" +#include "ui/autoTester.h" int main(int argc, char *argv[]) { diff --git a/tools/auto-tester/src/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp similarity index 100% rename from tools/auto-tester/src/AutoTester.cpp rename to tools/auto-tester/src/ui/AutoTester.cpp diff --git a/tools/auto-tester/src/MismatchWindow.cpp b/tools/auto-tester/src/ui/MismatchWindow.cpp similarity index 100% rename from tools/auto-tester/src/MismatchWindow.cpp rename to tools/auto-tester/src/ui/MismatchWindow.cpp diff --git a/tools/auto-tester/src/MismatchWindow.h b/tools/auto-tester/src/ui/MismatchWindow.h similarity index 97% rename from tools/auto-tester/src/MismatchWindow.h rename to tools/auto-tester/src/ui/MismatchWindow.h index 7aa173cc36..b4fd522026 100644 --- a/tools/auto-tester/src/MismatchWindow.h +++ b/tools/auto-tester/src/ui/MismatchWindow.h @@ -12,7 +12,7 @@ #include "ui_MismatchWindow.h" -#include "common.h" +#include "../common.h" class MismatchWindow : public QDialog, public Ui::MismatchWindow { diff --git a/tools/auto-tester/src/autoTester.h b/tools/auto-tester/src/ui/autoTester.h similarity index 97% rename from tools/auto-tester/src/autoTester.h rename to tools/auto-tester/src/ui/autoTester.h index 245937a5c7..fe09e440da 100644 --- a/tools/auto-tester/src/autoTester.h +++ b/tools/auto-tester/src/ui/autoTester.h @@ -13,7 +13,7 @@ #include #include "ui_autoTester.h" -#include "Test.h" +#include "../Test.h" class AutoTester : public QMainWindow { diff --git a/tools/auto-tester/src/ui/MismatchWindow.ui b/tools/auto-tester/ui/MismatchWindow.ui similarity index 100% rename from tools/auto-tester/src/ui/MismatchWindow.ui rename to tools/auto-tester/ui/MismatchWindow.ui diff --git a/tools/auto-tester/src/ui/autoTester.ui b/tools/auto-tester/ui/autoTester.ui similarity index 100% rename from tools/auto-tester/src/ui/autoTester.ui rename to tools/auto-tester/ui/autoTester.ui From 572646b8c618a01f56467e3c9ac9f6a1511747ae Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Sun, 12 Nov 2017 21:43:33 -0800 Subject: [PATCH 025/329] Just missing the dll's. --- tools/CMakeLists.txt | 6 +-- tools/auto-tester/CMakeLists.txt | 41 +++++++++++-------- .../src/{autoTester.qrc => AutoTester.qrc} | 0 .../src/ui/{autoTester.h => AutoTester.h} | 0 4 files changed, 28 insertions(+), 19 deletions(-) rename tools/auto-tester/src/{autoTester.qrc => AutoTester.qrc} (100%) rename tools/auto-tester/src/ui/{autoTester.h => AutoTester.h} (100%) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 34286b15bd..ba795480be 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -2,9 +2,6 @@ add_subdirectory(scribe) set_target_properties(scribe PROPERTIES FOLDER "Tools") -add_subdirectory(auto-tester) -set_target_properties(auto-tester PROPERTIES FOLDER "Tools") - if (BUILD_TOOLS) add_subdirectory(udt-test) set_target_properties(udt-test PROPERTIES FOLDER "Tools") @@ -26,4 +23,7 @@ if (BUILD_TOOLS) add_subdirectory(oven) set_target_properties(oven PROPERTIES FOLDER "Tools") + + add_subdirectory(auto-tester) + set_target_properties(auto-tester PROPERTIES FOLDER "Tools") endif() diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt index 0f915b8121..dd5d68e6d5 100644 --- a/tools/auto-tester/CMakeLists.txt +++ b/tools/auto-tester/CMakeLists.txt @@ -1,25 +1,34 @@ set(TARGET_NAME auto-tester) +project(${TARGET_NAME}) setup_hifi_project(Widgets) link_hifi_libraries() -# grab the implementation and header files from src dirs -file(GLOB_RECURSE INTERFACE_SRCS "src/*.cpp" "src/*.h") -GroupSources("src") - -find_package( - Qt5 COMPONENTS - Gui Multimedia Network OpenGL Qml Quick Script Svg - ${PLATFORM_QT_COMPONENTS} - WebChannel WebSockets +set ( SOURCES + src/main.cpp + src/Test.cpp + src/ui/AutoTester.cpp + src/ui/MismatchWindow.cpp ) -# grab the ui files in resources/ui -file (GLOB_RECURSE QT_UI_FILES ui/*.ui) -source_group("UI Files" FILES ${QT_UI_FILES}) +set ( MOC_HEADERS + src/ui/AutoTester.h + src/ui/MismatchWindow.h +) -# have qt5 wrap them and generate the appropriate header files -qt5_wrap_ui(QT_UI_HEADERS "${QT_UI_FILES}") +set ( UIS + ui/AutoTester.ui + ui/MismatchWindow.ui +) -# add them to the interface source files -set(INTERFACE_SRCS ${INTERFACE_SRCS} "${QT_UI_HEADERS}" "${QT_RESOURCES}") +set ( RESOURCES + src/AutoTester.qrc +) + +QT5_ADD_RESOURCES( RES_SOURCES ${RESOURCES} ) +QT5_WRAP_UI( UI_HEADERS ${UIS} ) +QT5_WRAP_CPP( MOC_SRCS ${MOC_HEADERS} ) + +add_executable( PROJECT_NAME ${SOURCES} ${MOC_SRCS} ${RES_SOURCES} ${UI_HEADERS} ) + +target_link_libraries( PROJECT_NAME ${QT_LIBRARIES} ) \ No newline at end of file diff --git a/tools/auto-tester/src/autoTester.qrc b/tools/auto-tester/src/AutoTester.qrc similarity index 100% rename from tools/auto-tester/src/autoTester.qrc rename to tools/auto-tester/src/AutoTester.qrc diff --git a/tools/auto-tester/src/ui/autoTester.h b/tools/auto-tester/src/ui/AutoTester.h similarity index 100% rename from tools/auto-tester/src/ui/autoTester.h rename to tools/auto-tester/src/ui/AutoTester.h From aa4320104b663c7b2124623b3f92066af5f6a49d Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Mon, 13 Nov 2017 10:25:31 -0800 Subject: [PATCH 026/329] WIP. --- tools/auto-tester/CMakeLists.txt | 41 +++++++++---------- tools/auto-tester/src/AutoTester.qrc | 2 +- tools/auto-tester/src/Test.cpp | 2 +- tools/auto-tester/src/main.cpp | 2 +- tools/auto-tester/src/ui/AutoTester.cpp | 2 +- tools/auto-tester/src/ui/AutoTester.h | 2 +- .../ui/{autoTester.ui => AutoTester.ui} | 4 +- 7 files changed, 26 insertions(+), 29 deletions(-) rename tools/auto-tester/ui/{autoTester.ui => AutoTester.ui} (96%) diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt index dd5d68e6d5..fcdeafe194 100644 --- a/tools/auto-tester/CMakeLists.txt +++ b/tools/auto-tester/CMakeLists.txt @@ -4,31 +4,28 @@ project(${TARGET_NAME}) setup_hifi_project(Widgets) link_hifi_libraries() -set ( SOURCES - src/main.cpp - src/Test.cpp - src/ui/AutoTester.cpp - src/ui/MismatchWindow.cpp -) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTOUIC ON) -set ( MOC_HEADERS - src/ui/AutoTester.h - src/ui/MismatchWindow.h -) +set_property(TARGET auto-tester PROPERTY WIN32_EXECUTABLE true) -set ( UIS - ui/AutoTester.ui - ui/MismatchWindow.ui -) +set(SOURCES src/main.cpp src/Test.cpp src/ui/AutoTester.cpp src/ui/MismatchWindow.cpp) +set(MOC_HEADERS src/ui/AutoTester.h src/ui/MismatchWindow.h) +set(UIS ui/AutoTester.ui ui/MismatchWindow.ui) +set(RESOURCES src/AutoTester.qrc) -set ( RESOURCES - src/AutoTester.qrc -) +QT5_ADD_RESOURCES(RES_SOURCES ${RESOURCES}) +QT5_WRAP_UI(UI_HEADERS ${UIS}) +QT5_WRAP_CPP(MOC_SRCS ${MOC_HEADERS}) -QT5_ADD_RESOURCES( RES_SOURCES ${RESOURCES} ) -QT5_WRAP_UI( UI_HEADERS ${UIS} ) -QT5_WRAP_CPP( MOC_SRCS ${MOC_HEADERS} ) +add_executable(PROJECT_NAME ${SOURCES} ${MOC_SRCS} ${RES_SOURCES} ${UI_HEADERS}) -add_executable( PROJECT_NAME ${SOURCES} ${MOC_SRCS} ${RES_SOURCES} ${UI_HEADERS} ) +target_link_libraries(PROJECT_NAME ${QT_LIBRARIES}) -target_link_libraries( PROJECT_NAME ${QT_LIBRARIES} ) \ No newline at end of file +add_custom_command( + TARGET auto-tester + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ +) \ No newline at end of file diff --git a/tools/auto-tester/src/AutoTester.qrc b/tools/auto-tester/src/AutoTester.qrc index 22fb3c10b0..ac16b9dd31 100644 --- a/tools/auto-tester/src/AutoTester.qrc +++ b/tools/auto-tester/src/AutoTester.qrc @@ -1,4 +1,4 @@ - + diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index e695ca37c3..11cb38c1cd 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -72,7 +72,7 @@ void Test::evaluateTests() { bool success{ true }; bool keepOn{ true }; for (int i = 0; keepOn && i < expectedImages.length(); ++i) { - QString diffFilename = "hifi_autoTest_diff.txt"; + QString diffFilename = "HIFI_AutoTest_diff.txt"; QString command = "magick.exe compare -metric MAE " + expectedImages[i] + " " + resultImages[i] + " null: 2>" + diffFilename; system(command.toStdString().c_str()); diff --git a/tools/auto-tester/src/main.cpp b/tools/auto-tester/src/main.cpp index 880741f172..58049a4e09 100644 --- a/tools/auto-tester/src/main.cpp +++ b/tools/auto-tester/src/main.cpp @@ -8,7 +8,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #include -#include "ui/autoTester.h" +#include "ui/AutoTester.h" int main(int argc, char *argv[]) { diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index 5117f78ce5..2190d61856 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -1,5 +1,5 @@ // -// autoTester.cpp +// AutoTester.cpp // zone/ambientLightInheritence // // Created by Nissim Hadar on 2 Nov 2017. diff --git a/tools/auto-tester/src/ui/AutoTester.h b/tools/auto-tester/src/ui/AutoTester.h index fe09e440da..6b44b77cd7 100644 --- a/tools/auto-tester/src/ui/AutoTester.h +++ b/tools/auto-tester/src/ui/AutoTester.h @@ -12,7 +12,7 @@ #define hifi_AutoTester_h #include -#include "ui_autoTester.h" +#include "ui_AutoTester.h" #include "../Test.h" class AutoTester : public QMainWindow diff --git a/tools/auto-tester/ui/autoTester.ui b/tools/auto-tester/ui/AutoTester.ui similarity index 96% rename from tools/auto-tester/ui/autoTester.ui rename to tools/auto-tester/ui/AutoTester.ui index 26831c6976..793188d184 100644 --- a/tools/auto-tester/ui/autoTester.ui +++ b/tools/auto-tester/ui/AutoTester.ui @@ -11,7 +11,7 @@ - autoTester + AutoTester @@ -76,7 +76,7 @@ - + From d11aa64306f54dbe1b2fbd3297131684469dcedd Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Mon, 13 Nov 2017 13:25:59 -0800 Subject: [PATCH 027/329] Seems to work. --- tools/auto-tester/CMakeLists.txt | 34 +++++++++++------- tools/auto-tester/ImageMagick/magic.xml | 23 ++++++++++++ tools/auto-tester/ImageMagick/magick.exe | Bin 0 -> 18334776 bytes tools/auto-tester/src/AutoTester.qrc | 4 --- tools/auto-tester/{ => src}/ui/AutoTester.ui | 0 .../{ => src}/ui/MismatchWindow.ui | 0 6 files changed, 44 insertions(+), 17 deletions(-) create mode 100644 tools/auto-tester/ImageMagick/magic.xml create mode 100644 tools/auto-tester/ImageMagick/magick.exe delete mode 100644 tools/auto-tester/src/AutoTester.qrc rename tools/auto-tester/{ => src}/ui/AutoTester.ui (100%) rename tools/auto-tester/{ => src}/ui/MismatchWindow.ui (100%) diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt index fcdeafe194..5e0619b253 100644 --- a/tools/auto-tester/CMakeLists.txt +++ b/tools/auto-tester/CMakeLists.txt @@ -1,31 +1,39 @@ set(TARGET_NAME auto-tester) project(${TARGET_NAME}) +# Automatically run UIC and MOC. This replaces the older WRAP macros +SET(CMAKE_AUTOUIC ON) +SET(CMAKE_AUTOMOC ON) + setup_hifi_project(Widgets) link_hifi_libraries() -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTOUIC ON) - set_property(TARGET auto-tester PROPERTY WIN32_EXECUTABLE true) -set(SOURCES src/main.cpp src/Test.cpp src/ui/AutoTester.cpp src/ui/MismatchWindow.cpp) -set(MOC_HEADERS src/ui/AutoTester.h src/ui/MismatchWindow.h) -set(UIS ui/AutoTester.ui ui/MismatchWindow.ui) -set(RESOURCES src/AutoTester.qrc) - -QT5_ADD_RESOURCES(RES_SOURCES ${RESOURCES}) -QT5_WRAP_UI(UI_HEADERS ${UIS}) -QT5_WRAP_CPP(MOC_SRCS ${MOC_HEADERS}) - -add_executable(PROJECT_NAME ${SOURCES} ${MOC_SRCS} ${RES_SOURCES} ${UI_HEADERS}) +# This is preferred to GLOB_RECURSE, as per CMake documentation +set(SOURCES src/main.cpp src/Test.cpp src/ui/autoTester.cpp src/ui/mismatchWindow.cpp) +set(MOC_HEADERS src/autoTester.h src/mismatchWindow.h) +set(UIS src/ui/autoTester.ui src/ui/mismatchWindow.ui) +if (WIN32) + add_executable(PROJECT_NAME WIN32 ${SOURCES} ${MOC_SRCS} ${UI_HEADERS}) +else() + add_executable(PROJECT_NAME ${SOURCES} ${MOC_SRCS} ${RES_SOURCES} ${UI_HEADERS}) +endif() + target_link_libraries(PROJECT_NAME ${QT_LIBRARIES}) +# Copy required dll's. +# Note that the two ImageMagick files are copied twice. This is to allow the tester to run from VS as well as +# directly from the executable. add_custom_command( TARGET auto-tester POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/ImageMagick/magick.exe $ + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/ImageMagick/magic.xml $ + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/ImageMagick/magick.exe $/.. + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/ImageMagick/magic.xml $/.. ) \ No newline at end of file diff --git a/tools/auto-tester/ImageMagick/magic.xml b/tools/auto-tester/ImageMagick/magic.xml new file mode 100644 index 0000000000..7f17731b09 --- /dev/null +++ b/tools/auto-tester/ImageMagick/magic.xml @@ -0,0 +1,23 @@ + + + + + + +]> + + + + + + + diff --git a/tools/auto-tester/ImageMagick/magick.exe b/tools/auto-tester/ImageMagick/magick.exe new file mode 100644 index 0000000000000000000000000000000000000000..f77e451dadee48038a92ef0364773cdcc276a23b GIT binary patch literal 18334776 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

dQd;5H_m;d`g~f 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%0A%_=CkMPWv!udkQ9383{;EZ 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

e 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 = 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 z%0A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

+#0A|59!YjNsam|?v5<^&}H?D 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

ZLo|}+gtw!X4oQ_Ohh$-d;mm8P zfXw7oiae}o2YZn4gA~MjxLPl6lH)75?wi>~BI~zJ*iMRC%bd;p@YL_=3`UGY&5xVS zA#SED%uG6n*Hl^=(9ETftYuzVJq7OBRFA*g`I>rRhLNorT-km+tY89i z9B=a+bmC{kePY0!;m(f?E5G$SS}g!lp20fK%YjHB(OtwkJ~t^=lDPZ|g)Z_~Wwp6s zBZ^#HOx|;abP-cT7+lZ@NP`Pp6&E;|Ib7((-Ql7J(M9x!D(DYc)j$=2(wbO63>&B? zLfji0Hc>SEgZg5;w4_(#NE5Oo?s&zvCtpjJjO-^*wi36J&%cq#@25bcZk zVRtv*=9F;R_;&$)$EiU=-w_&Q(sxX5E|zF(nlqC>-`%6u!mo@Eo)sqgW?UK}-~WWZ z*o zakntNTHGTNnAWWxgl%oMtbT3)^2lcF%XOJFH+}j=>DGZ9OZwxMW{jnAfGpb{j!L@+ z=hF4f(A~1aixRMZHL{fnd|+F81vbM5TlN)#9+c_t23yt@lC<^?@HE$bU`xFMe>d2Y zuOMQu(3U6?^KFtyykKi2)c5ONu^kkNH*7ma;vE|R-yLKFCK3jOyuaEr2v_PP9(%)K zJq_|hVfdBs(uraz7hbj(H?c9LNKH?ON+V?z2WM{_+aU0g3hU{rjUao_IZo#ujM|=R zhufu0Jm)&tW8EE@bbk%V8(?@iKQdsE#73PULEEvPipi7t>JqzfX}di>%<%r>runE)9xzK?q^^0~}Z9m%XI>7`T&3)*$dNOjNf*X%ti)r>l4tACYvd0x%U{^2 z{VvUV^j7m4l3CBM1Tk=SeYD`OyNiNFDR~vLmQ;Bw?!_IvwF+vcia!=2T0qv4KE4&~ z42aI8^|!8&_?yVAC6%BabsJyY{jly}B`3%>)Wud!PgZ;tt(DTF7DXEt!%sd9+jBvk zz5>(_ZAc6hMOFOc0@UQN$!RClcxT%82xsiC_WUK_vN?RG5w4%oXffY2$r4+DE-PxSd~#m|!+S&+ygMA!G|oryNfo`+UStnT;!))7T3j1B z^S0!?@(@H%PJ~$v_Sx;CAw%ezsC?Cs|HtkoU`h(iEDIFu(VtM)@Q6;1-h#*WzA#K> zjR8}6`Uy+H)|fCVWjlLOM@26+V^T)qq7F~aTZj;{h8(o=Yd7rp5EAp>$tF?-{_jav)D_5@?r58@OxHht;#GKfPLD#o>zjwnvqEbfm zuNvMigm@Oszkc5>N;7YsF(uK>lXVF!7`MnG&dHn(1jt5FPipvxr@0;id*xQQkg%?X zcZ6x3ru?wA!)aKTa9BsI zPEyRYqu9quYmryo#wT|@tQ+&|NkZWEcrY@po)K*1*{AWhmY<*#XB)4XYXmjDj`sC7 z-n|&S28E#c+K-5%9~p5!nnlFXoQ8X%2&Spu5oehH9SC2om>D7lAzeEDL4@=rpCBl- z#Ya&D3%!yo9&px*c%zdM_9-91MqyV;2W#l?37y(JnA!}tPt6D0KvV;(vb#T{Rvb?i z@!u*n%y+Y9I)oD$(Eqt$RfH|gu@TE-j2 zKxs)YqBeCK|K%bOVcYnN9~-#vp%(~5X9s`&DKXUQQ($wb#V*b2Hd={>|7|a|a{Ud_ zhA-X=y8CvccPWaxJ>vbe=N+Tbz8M&wtHePZX?14+wDic5Alfy@M?E9XH6GWZ85PFJ zpcxm5W~7;#!KfL)Qlcxw+zeOCX1qcIh-fpyFucDuehpKiV_`=lw50Xdi~gf6&wh&j zUt&~@sVw{yHh$Zw9g(r9d>hiM{PvQkM|9>qoiEUT%+0BfLITg`1DoI#Qo`Irir^=p zfdpp)#uuClJPpCQkRd;@A}L`GBqhv~q=dPY6v4NEi3TGBCK`;513#=lBo0*rD+VSx z>v7`pz_P(6{;yz?4Sk>waeM^+YpD4D694tr^qoK7e2%^|v#&|txtrepFZxcP{hp4S z)=q7cnULJHNQ!DQ#Xs41I+m27Y)wpVruCs87fIe$!U>YCsY(mxW+sgO(UdJ~_(%%< zNhY1nwC~-}y?yRf|0}B@NBVso*<6O56Y$uw>Fj|>XuKo+(OB=ziuy~gBlFQt%m>ZA zLGQDY&NwjpwnO-9XD1w4@Dgdx`z{1!CR^j~#7Z({yVJt;5@fB@L@%O`0)^zmhGh`(RI#WA>Kp)0?(?CjJ=evClrk zcJI&<_xGM3ac~k7Ip_pT6t>$b7@@50gnf$I%-7aK=-_3Tm?O`SB5H7FOzH==WEdR< zHrNhY5dRCYRO--NO(lmfEot4cMWmpDLySW`h9xjVJ?T(S@;zk`!ZAOr`%&;WKZW!G z?@c<;&(q0>6lY(DTau=oU?tYUe}O+U1-u8rhs;2vn42SCUr!57TvG4tjG8`&(~*Azcm1f!2_vcF@ZaS!MPa)RuQpQAfhF3ZKnB8$#&Br>26XvP~C^ zPL5q5hP41^OEcAOS$~d|v`e!t=}A+wq9@q1?R?Td>UG4iPed&rl|Wlr%Y9GNK(8a4 zGQ``_oJGX&VBKE#fepscd}d=vuXGSv7^L}qr}SP#;HZENL&%}rViZ+$Jfs&n1F}z# zVgAn(C8;34s4eruVhOJwI!-kfIiKa@j)!z#v(5_r;$4wb<)?q7*SP`be10^NUckSO zq>K69NO}?98cDyvH~tvX*&6r!+<TZqK--@Oo3Xy)Ge@@ zUrfN%sqxbi3i6l5cv{;9=5AV0*4(QdYEa1-n$8yF19xR-*q)S?#K18|Q!KJ}7oi&~ zVW?j=y21o*9J`a1*eTfFuYFL*O6=qu_-h{=bY~7t&(pA`wuphs4LD!o>mun__`8wx ztNiaxA^oFUFaZJQ3S>G6|7U$0oKDBsa(o|=w}_{^tlkm9x|A(EdVeu1vVuI^OWs%km2ip|^CmTse$Ft?=U157)>zh;BB56C`=@ZdApcoOXf^A+sWN=B z5mp2p+e}NcR&C^4H;@R}Z;6+rtRmcYu=LvBFiZC9o~QBc(#W^38sARAx2&W_+1W z-O_>u`O7TpU{lS8mf8dJ`dcI^q{Lw52CTF@JY86cdl^a5R#o{<#V~(Qx&ua~%d<~o zH?VmdV9wU!Bku^TIvH5L(n0-LmRy;Yf;9bFnU!ivr$^F(B3KjCCjpAPX(ZvU96~HI z*>^gT%>||b#%=u3kWOcZT3h6NO;Ly90LbE(G=vB+LUXTnXADiBIV){#JLPBSZ1s0Txtc`P0DQ50nlDi+eyXpB_DQ8)O@la zPLeQ(iu#H7A=nP@#y%e}~roO1HWr*O|$u--!5KY8fzp<7K_d zV<9st3)!KS7sVhuWs@yi-I-N+pD216D=Bkj?#x?VaHG<`2^c zBEJI;f_k}qEmi{SAvyh}p7x5ml}NDN2jgR9z0AI=*;|i7;IfgqFK-*w0TVS=5=3+V zMMECC8mCT)Th*&sVV@X;B=<~5B&6=XQ*q1>%yTz6N$$a=?t6&qq2mzc1=T7Azw1>9 z)N&mwv5;?uuPipm<7B2W%DqZmnL#%HQV}xFK`jG*kfK+`R%4=eb1KnJ#>Az*Ll%)G z|FclN*ow)rkAu)+3!s@*DueJWarfFBq5mziuPk2H%Y(eNtlb`4G`JaURxDLP-pUqJ zH29S0f)(l0;jYCL4L&2%7Nm_X$0AK#-pP>^J&uX?xHWn_U-Y=OM>e302;LijM!iav z%+gsmiN#~s?-k-AjbSea6}{TNs|v=G)YmfKq1M#bs{H++7e5gfaxz50 zTK{?O%%RC_{*~kbO9%l=(#Zq%CM5#p?WO=1N!RRw5lRIP+q8HQnO4>-l*}hn*!;m~ zfCfF;HUmTCZAV~AwYf5b~VT^Z7p2Pmyp0|j0jW?@S&-C5RpL!fG=V5Z9nRIXgb}S+xe1Qj7JS$ zm1_c0nv)B!&UdI7hb^ZihqACd${#I!_Z$v|+=XQ=NxFOmxRp@%6%yaPtX>awvf`rL z&acfiCW8+!*O*8(!nUMgK0cEopIv1BEHn`f`w+a{{c!bwyDNmIyC#}^U%#D*F74nO zCXzUhq9Cn%6%%K0c(rBG9xQ+7c`1~k>pBljAUn*(&)4gU_MG9;oYGyez+snW$TTVP zZ|mJ85$tNbC;8Vq&r9}o&lwdF%ScYmo0pR6jBnozUd_O&>OqaH<*olobIMmuIjV;c z=@PwZ6 zOA1`K6m@&(6X*lN!_~oD*%ju>e!Sl_86L53!-dC%3zxM>IyxWI%@w?RziGIF^k59v z^Y>%8CR6_rP&3@5XUsVkm~-4mIUYui408^}oMVhR$BmR@5^}UQ=eXFMqo+B?FZZEU zi2D%w)I9C~z0cH-W_mFCv5j(!L5|nWIsRkLQDM%pjB?zLg>rqQ+lA)OmzY0)m_8@a z_y{6Ft4l~A!|=!0B#&*32*NQh{a2o|jQRU7n4~t=H^m9CV-ln`5K2Qn1E)Zehp9qB z1_3uDW)OT+h!|CaFb}fo7w#chHH3YLq(`!9{A=Mazp5)W^MNlYjCu8eMH0`Gv96M? zhOSH-u(2Tu)~ zgM72A5#hveo1ZZXhuDSP=Fjn$|MHUG_m^Ks-`r^Z=OrflvEI9X&wea+bl3eQ?ulRhC#8+S*wS?JNPQJ}4q2f_o&l))#{;sfhD+Y`gV7vH| zQQ@K9aoiYc|7u`!t*7ANaCD`hW$J0e-i^Zc%`vXujEiX1zMm8oL=P*4AbO6aMcBSw zUs6QFu)P~OYz){H($zW`(?P0pH>A$9XC))t9Gmwk5ZPzXN)b<$ov^Pe3}dcZct;3m z_6_8h%hT*+xuIy9A)3B?-y+GW{_F}&T*`;M17Wo1QV4{4K4j=<;S1!xt%gql*{~ zoGpp?$rPKOl%~Ur>vh!bxeTGSgtF9=SPatBq;Eun0xO_z3*EsaDYqErC$+o;G%S!Y z;T$rFkk>vSz%>Yom5YSODiG)4v3k=*hQ}%(LEM0HpSXgYnaK0v^_pVg#%jRPzd%6< zfkdCQxuzKYtkn)!48jeO09YD@-|IW%sfh2o7jzR=cvoL*B(Cq&jjH^Byc+RMUyrCp z1iC`S1A4x+NNTVmaLjlJ$H_Ez%J(6ins!GZ?xfw9FD2SPjL)rf*rv9%+S!YneS=~h zfk%rSMGx4fIf^FRrhBg<2jN=&LjS|Mla+i=x&1*0bB4s1lWo%-Y|WF&4z^}iN?I`2 zuGi$+^;#cEl4ElLzdj?^5y-PW9dOt@p37leBdq3S)_V<{UvdLuYk8NhdK)BP8 zNxdCVQSfuXXD~<$8?+lgvo&?O0f#M*Ub8igc$n!M6tg;}!dW08x?hoVwx_K;dzQen zztrHN_7qb?m_=w)9k{Pe4M>WNO0ZxBGd z!r;IrkszG9(t_}4N05(?3?a89t3$~?FqZ819PGxb-|&VOlL5mhBNN#O{;^CjiZXJM zDdHc@6-yzbOCi+Aab*roXY+3-u;9w|5Lsfpo^A*aZr0I|ju3#dTARg6_VU!DG}shf z?S*3oR06WhI~LME>IbocvEN%AHTFAD0PJkdPihT%KuTI<*>p}Kqwe1jm@h-@PvY&W7u2>xtwX=+SMOj84sqg1saqq*pLFf9dakc z?;;r^MI`eeeiz*6Cmsi!1@O69;V2?Qwz)DMOrGgNxW$uoQTeG6h|7^Negxs_loGB^ z4t&Sw2&8Vkl#IV3@wRT);$mco0ypD|o+<+1a?c^11pkM@v}e491JnC}tlpdA%6JR6 zx3{$eVLKX3(YJP$ks-?sV1+gJYO=Nk^_R@wS_m@0h~np7O;GVh)UEJUG>7==F}57U zQX%<8(^*{)J#x;7{guMkMMeyG<`*2VzD-ATmkI$PE4&tEkUg8a$E|*WabpW$>5cK0 zg_MTu*~qG|%WT84ZS)?pXTu}evu!4Ow%K8OwjHo%v$GrbPP5qCermF3>!j#qhCLgN zu>#QZ_Oo4?_x_4KTPO3l|NIrk-Sb3v%*S6~%!fuJo{cS~F<%b`vE`Vj75~nddpeO? zC^FvfpVjsE+haS#H^5N7a=kc5YIzC|>7n5if$m$}@U(UZwIcbiTm2C-parj5!{g~d z6u~t2l$ zhQTCMe{6QxuJl?HlY6OIpLqd(ciF;-eJM) zk}+&yy#>Gue~yDNCE?M67h%gg4o^{NUIclzuY21VVhSYDzCh?Lx{w`lEgw@HHk|&5 zlnb@|9v7z5y%er|R_>xFS7dTsn)NB85=bvb|C6K_-&w--YSz2{30cl*!-hB_x8{px z2?Od$!hm`(1jZ3b1}p4yR@W(>RSS7W=u-NuMg6CY%25Bll~jMOss7z7QUBNH)!(UQ z{bdj)o9ci6mkZYaGJV#f{-;d!j~4ZR7aQ&WmGc)#_I2CL_3wgb)1sLz`+rXTeJ))8 zrT8oyAlP~q^=L^?8r5M0K6?w@4H(ryeDrq}Am34FL#n;Y%<$IwUHOr+faFK0c{}8T zvKx%s?in5A%)g}P$IEJ&?At7t%UT%TFZp%a)foUyH>BluYSooE;0&Ma=hs7iz7>yA zE!xa{0$fCKhQ;eS@jYQ6D)3a2hiNy*rUldX`)YI}nos85=??#Xh;(-F54Mt}qG$L3 z7V8p zSY5Nu)@Bvd7GxD=!ms8QP{rD9u?-ekEjJnffEG2+mSxl}tFsYUIy^k*;oFe?wqsfc zSylSWnF*g(m~64}@AvR)vW#$sFfpENTPn{!0(Fk8T91EeNOqms00vZ>TvgZLsn`fY`bQHCAGit?V*!l))y%Rk!mfZ^r0Jam| z40O-5e#R7+_#RcnCBE`bGO!(ioh0PNjeb!t2#9!YmnyH%d zr}BK$Q#!w~CZy*EoLQ#${$cn=rc@p76m3-kNP zGSXqo&ds!bd=`y*9KVz}YF9eJ~nyCdl!w@1=zdEf0c^Xp}{$+=bz3{6I2 zeHgz+4h&6k1a4&|&JBe@PkZ}D5XSvuoy_s0qSlbHF*I9yzD76tT>LD-mtrLE z1X7l76Pe)35Xin95Aqi1HKPDA!2c6Rp|AR)h|lf-LHi1=63|W9NV4kAhN|qN0Yog} zlo8>8f&L7P6hNY~Rre;#zVg;`X@f=9)EKO?mj;5UrkF`NFz}By>`gSRq_rfmjqYOK zq1LPr-k&-m5U5pr(QSk!C@e)bm=^h)E20zV{Mod~aW;fh0nd;^?hdt;L*qNc6OOGa z=l7igzu_GXV~)P&!apz-E}IIkJ9BQ~HxSALAcBH26;1%HY}FpVIS7UE7m8lP3P;0Y z1PMPVY~R^f&mh!UI@r{q6bMm`75T~XXoubioTHZxtrvnXA@u_2oRDs97J{u7CZK%S z&k#EbPiS(^Rqsr8rs=Ydc%y8=zYL+H2@jN&v|G=}SFoZq6xVAProZZ>uCr0W<1*_R z23CMc8|goDp#O}UD_|OMvr%r}AqLh_yLqlCVeapjV2FYgUuCQe3FXamWnon5%4}xy zCsNE=x`fHuf8HrZkO#CgnM|vIny}dg*vFTR(&S~_=pXvx)yjN=WGW1si>&;WMndfvMUn_A%_LSm?GZDp?)^y|{bpAEpMqC@_^0JSO)<`IFl@<%7obrmOcjj!Bd^r! zL>jRLSJNV_LMc=_c{Mevp-2U&q4QSu%ABXg`YWpU{{c@-W`F|Eb zAk-+Ub#~v+y62%tJe6%quNpvM!ow@Gc3Qt-TK{}J*oiGt)EWctzQQ8$DFd*Ta6fob zWZyPDw^-K83;K7JyeDNuZ>x0_UB$2a7|O?ThkDT0tb1RrumF9|I}9G*Rh%oT6eX@xH?^$^~2*-=SKVy5SYX`)J!ok4p$g8 zga#Ai(C#FGy9#>aUK2^s*Hnjf&NfqIjjsS^|7&WD(nI3jwK!*k0>y`jyyT_?H!l&-Geb z*yyLO_J6Uj+WRI%H7)I{hIz0kRRNENX!zKN7qG9Ii@GlypDS!%Wu`C8_ElQK$7>cz zq0N25@w*VcpZsYjfkv2p1mvx(S}oyDIj5RXC<2JesUDWqQ|5?W_cqb$Sn-2F-^rSF z{wv@-<62rUv2{jxSul78EZQ^gkb!#Pc94RBS8R1ODIeHim?3Ch~u8=!EU|O(Xi~mJRc(fHy@B zcvIzovn#k$Ip9r~1KuqD&Mhb{>0|M=OMJ~2i(mD(aI{tuB9u2<4tR6;ky%G|wZ^46 zafk?(E8r|*FP7%&rMUt3c-VN)*b3v3k%>sp-%aUGNEhr5>FUU?NN#~0*vMog*HbbD z$yJn0Me+?wrX#tGl37SD*hM_GOg1z4Az>^1;EMe4b2SRi#=H9{Uk;LY@1j;v>rU^2 zmHx;^L~=3)@7BdQbIL26t7G8z)Di!+s&IZ0+t4DWtqs=n?sMstJGhFpNHVY^kWWW{J{dq_SDFAZh=;z}fs@Hw95N*Rtkg5Ji zw2g^zVSP4SzfJaUp*zrG^1ob1yp_7so#9M%u%V@B?!axwb$aPme_ZBF`xY+h57@?^ zJd?J+=yJUZY7vLptYnN$VGF*1Pg5~&t*LI+4S)tTHU-{uJEHag^LHL0?~p=JgY+?h zY}?m?DWVMcF-PPgW0J#rdrR)R;OC&e4nXR*0}26e&Dq}+(+)4f60({{VmM)h;`bi>oKPmi5u zRn)H*f)`zW#(5dHuwx$($208)fK(MUNi)T z8Ae@?_rcN8B~7?f$!d+;a*~h1kG}E(hnfek3>Uyr;(AoXrAo5JT>z;@ouY51v04v( zxhwM^n_o%s;vcY$cO!PMmehJVF$S3N{=~FO%T7LEM@WC4j+W=ELi+oUp~?VK1xU@R zf+-hL-l`C&xbZPFWjvOUFb}a0_VoJ97aXjpJ1jeSBiL8L!N`YTAJdVM8Ku<*mb4WVVLKHTVjds!V> zgjcuKLg2B3@ArlkP%qIXxt;F=Ol#O(Vf#%c$AC>Zz#<3BzQc5|bi*G*60&sx4wg}- zgJtuA3mh!1CyIl`ldMDz6;BuP7d_`ZK?^gy(1$>dg$o%r`?#wi-@@Gu<)Q!{a!-YP zYkyB7RX|m=jKnJbh3@>YlVqgvuZi8$A|z^5zd#XG9IPZJZ9nNden2d-K~JT^3DtJ6 zf6!}{_0oo}_JV_r_JZbv-UnHUJ;oO7U*H`Je^OQ=9J*7udJ7*U)I6fEC<@kdMSCR^ORm#|1duDUYr&*=_Pys#FGQv8iI00kGv$(%a+8! z@o8gt}mfVfhI%b2p3%26E_a506lM!e65CmaT$h^R4@2G&{`q&QUrL9 z#sfog41I>@dbxd3Qos7*{ULD z43%!dsYmvR1(}j}ANrA95hE#T5P0|Zmh-bCKo~Uh`>!V+k&UHT+wv!%(vwCEIuhl(h|jDP3q$D-d0 zyPykvPm&Zw7Yx@YtV_k0zZQQfuVJA?%~I5?l;do)^&|0vz?->?9{!j3OU8bW;u%5{ z=R1<+R)0{`I+uEyE^NM~64HgF%V$B;T0}hNS`pE^k*`znZh_&(;5)cTGQbm7sP(!- ztu@Rywu$K5+k%)k1laV(r3D-Agzh8Nt=1U(@#nc0k1V=M^zL9Dd3|3bWG0IRu zR?D-GARa^7ezzKOs|RJZ$)WzBp5gC%aCpGc*87MXLFp^(>R!YYhkfyX8Du)Fa73&m z&2ZY+HAoT+cd{VT1I78JCJ;41Yp&B4f$c6c?hOzOHHVku2E`_$SmED|qgdhXAgj>a zY<*Yg6|z%RcMpG%IkyGeJ)Hg%o|%Zd15ziKP5I$C`|d;&8`t;wzZFaTwJSPFEM>2( zCA~nGl$?tAtULMblRHZV1FwW}3G#V58A_)b-rEbPl;(y@WP~M!;+$V1e!^*Kk@ZUM zz5<`r%35|RA9*F1w2`f4&8^FUv90a;sILCtQ#YJ9FxyGk#R@Yac`i!PAqQzjxQhc2 zh-o8F%4$tu>=|B2ViUI^-SM`y>ldd5Lv3-vX$h4SM8^uZY0#OYQdHz~>uzmGyuQ`0 zk4ki?2mL|sCHT>$xzEU2(nq1?@SwKqqmmt%MYnF(N5zZ37iWw;IkSfmpP~H$J}*!Y ziIEa;9B7s&I8Vx%b$Q=Gm{W5d*PZ@vJ<~wG-cT^`N>8FT3Sc+<=jrE-S4jL69xqvS zwzm6ze%bp_E}Js8hpf7vq{GyuSqFudhe6u&Y{|#jcl(>zxbFL2E|x?X-8B=i*xeBG zdaOKDRIigP%%usGc18Vbs-jL$SJY=@Mg2yovFu~Umgll5&K{^l#^TPBHR~^YIo8_U zoJf@i`Ep6P&yTY{@-mLtE@VTsgJJ}yBPSMUBfbvXNzi({drY)JZFo*mJ&gEUtIjhn z&3d|?%5KM(W5pwX6^Dee8+7mBfgFg_kMffF%#{ROnWjg?NNGXeDT^uS8~KCzPFtt9 zhNOFQO1Z2h75@WAiWO_p{S?Fm{vdmy6hK)mW5LsT?>jO{R;?d?Y>0^9Y3{G~CQ-!dk369i2&*9ilf0WEs@n9WVKD&eq{oO5r@Cpo2WTswBdkr;@z&~ zdc#$ac9Ok4g@5sap6*~3Ssz^|ee*51{!*1oF?QA_t?6{PaeBUq{(K(D9D zmL2MrinvRN=1IpnnT2yQY-xgcZ+C~|%geKLeeK%WlEkk~4vXH#ZV3C^WfhpCzMTVw zbmBW&6DR*`EF@X8HUzNVwzf3LnDP%u1U>5@ppr5^=v>PeJlh@FJ=)?L9HCfFXEd9l1_LszuzY4pAkfV=Pq_b zg@KFIC~FD+;$n$+tqtkGMQUtf9Tyk?D$eF6){$};xJV0-I~=0lU+uXOG9>LLwS5d^`9l0bSDuFAVzt=W24>ySb<(bPdI%4>qyU zG*}cRzj|>oA*_@&+1Z#<-s+#7$Q|(O#l=!uwG0m{{JQ{x%QoS(7RFpzEvwG86t5rA z@uC%B0D$0Pl>d*Foi2#rB1%i!FKbDIzFjUk)Z?fSTtCeZH)iaP@@wR|^ z(cH!K8~^z#dfF+Tj*6$O2tL)9_yO|F{H!L{(ObZKzd;k)cXM!|M3M8pv>=>qB;Jd! zx$QbkBy*H1dZoQ+sP1dN(Q~P<`D%ir%2L!y6CBlZaR06ts^hNDlC^|;JPRfJ+Eygw z$}%WM>|Qt>LqxxR_t|pEAEXo3 zp=GskFh?Vw7Jc308}n;MuZKrpcQw6cjz%hhCgVnG5A!3Uq!AGME7`A$HBd))E8>TI zjb>_y(IpTKWZZ6gC7EgE0k8H9|L<$?^Yu0Bp8I9ZpOq|0!f3_St5My?uXS`nwEDij zGdFrt6)kQcibJedOO-tP6zF2lB}K0cpr6zl&`vLg%ku^i5I+&&;(E4+W(@vyB6me0 z<&b#MbULO!EF{~~Vbok$fWoJlzx^sy77iH1zKAZk)$KTe3W4zgJ5j!#ENt^^Q`7cS zju6gVW87PPjoE-UfLo@~++F0-oLRD#^y8uB;i58LIjS45WzPX&+GU%J?EY%cXjx0h z+>0Vwqln<+D1!MPq6(ZVU7C9-1VThR$eMG7tR;2XE7pX#|NHFdB>9@-SmAecmLy%Y zcexb$H>}TGwn_eK&)u??@bsZb1@{^i#Q#PG!w;D&*tOlLK)~!IjXbnmYRHzggw3C# zRKh81W0VT;bNN@A{pP3UQlAl}deUSq>1}#*!OpskUb?n-GC<+tyxBOIR{*f?U=thT zE^cCDoIBZw8a4tRSEbWa@qQ)VbG%=Q_jRWCi7e4sj3QV^=T6qqeGrp9bcG0u>A&G; z9Vh?TgH0^)(Vb23f!?rCVkzZKY|Iu>MH!oe7|^JOH?hQtbxmx{c9v2adHW^39W%DL ziFJIymfFNR0%%vW_B;YEUCWwkY!li(O{}BKmdr02jTP$0J6TJLKNwj%zbre722p37 zJ0r(?^wdp#9jC4tC9frdmZH{%J(OugoOJ?7Yc96+bFP)Ok+75!t9QjtVME7am#eI8y*^cIW`Q=8xH+Mm7ZKKlFb3{={F zhc-P1w_1Y*7oJ+f%g572;w+$ra)WhG^CAE=w$EiZSnq8Ay!3P@Z=$Ta>9Umr&ed|j zz1FU3xFrpnU#stw#oNZAo(YVx2HfL((jtA7f%0cVVGDW)eRA7Z{8^gw0B`?tJZM;CSs`X z#2jczf1Ooqm=_?<<*H7STFWn<)JbZAhuf)WAc6!WA}DeJW`&E# zR$(ZaJ4e>*C@)FYl4gH_qY`%%1TA+=uh)Hfwj7Dxd0V{0ee27!O&0GSYVoeKcsE15 z8{6XD$!U~tl6W_|#k>8}h>(iQUqm{EFF+0XgPv5EX3e6dK^M16trBx}qVda$?B;t7p5_Leo>p!2Ii2Clts*KVMV%P+? z-sVD0=t4~xlBxv8QTR7N;wjoj!K7#a919E3KI1cHpbzvT{{qSfBOSaCkaS63ri+6( zl83K(9L^LoyO82;Jl*F6NXeXa{OuTm&&v|loR&Gmj~*kF*{z{DpjVQOU+d^s&*R{yiTkW^2R6bk z$Q{^7fO%_^h*Bf74*9|BtE;d2f--LH~97xgP~6m96mht!1+T%2T1^=u8;sY;Qa>% zA1XW&VyHrhA*&jsDiAj%G1B5e`htl3G`= z;jhmxl6ce4I90Cibrd_YuLBmJQ%6{2E#W#^N|RFMz|?fe*-zob#Tjv1SAKna3dePk zDDJ8%Dy}_>d!33)II?%SD92R5T2lc>+ED?&5ZRx!8;eg%*tTeq#P6p923$%fM8X@Q zoY+V?ff+IyGuc$u3Q^WBQC7EVDr*+Xx=1wU-d`!?T2mo^Z3hmyg>Ti`MA(;*YVbn% zk?VFW1W=&$pF0*x(=4m?@+OvJ?LGH*<9{WDg=Fdf{9o+TZkctyecHd>f6PAZyY|0k zpXO4l5um0J(WMJAB$rwyuyyRLq)lPq}{L30S%09w=H{y|1&D8a^>2oBBw{91n z`T=i+<)c#}9~JS)4E)U;a?m3uwy9=ozDqu#V|*(}4AQo0){P!extCa5#3QpWgf*Xm zzezS!wfx<}5M7RYokskxbrJ!^e_%^R!w%5m7g64!SoS{y8wYK!VH&l357nG))QmeP zehO-~fo?UV`LRb z!1g9}bkdz$z*f}o{bR|%%EL(J5iK5(%I=*Gp(c^p5maY^gy_<&ckRaDx~B>{^;-p} z@yMwtvg#d*v#W@f@X_PwR__1))p)t>jgbES*GQEj^$k*Mkg7%MU8MFP^*T~*ky`c! zB(F96(29`GMxBrY0w2era?t+}3VT;W656JT<(#A^mU6(QSxa}B8YoEFfu>eoDO&mV zE>IUWyt8_2*{$laC#(1139@Fy;Gqais|J13Va660?bW4(~Y4|0~W9;NzCZq7ApYlvufY;6U zk1%D)GG{sT2y|`y@`arwm*$_E9cCTWDt_YedY$ib90#qB(SfFB_ZJA%30)E?zQN*> zaD;NYw1k>%q>B7#i#X;|WzCQJP=djPq~NEpxCx~s^LK}UHlgU$U&Fyct>K?PBIE?M zV)cgiA1y|)if15`vDe1@lLqo{wPGOM;_)BG<3M_R5e>kixKX@aYP?Mrj~T{eM?6BX z3XRz$eE-X|TcLWV? z-2f~MhixhXJ9xUAZlsRzuWB^g=VI1EZn}>i9!U4heA~gW(ru?mykZN2IM_x2xmg?dmVGKWJB5XR#M6VNFs83@mVbzB8@!?)IIDpLv7t4D(oh zXA-?b6>Yh3Z@&C7qB?BjZ;zteYAE8{z%{jDfMB6{SqP+vr>)($QC!Fr0*5~7>^sxW z+d&)NoBSPay&uxiXJ<+iOZ29$jQ7UbSxTd#K1Uej{%X%<_?-Xz-UYw2`!)iZDVF(P z6vFX@2~U%nk&JplD>pgV=+Y)9%c;zDvKz~$u_h-QQ%33O7Fpfe#1gIdK2j_-DXe$U zDI~H@F4hwoM+f3;ve7@JRW~`=xN=;HCxHyzG>t*G*+gkkip+Xf;L^5~(q;WrTocP_ zgdq61tc~PYuD6%sdLNR4-X?ti@CDSUrHVS_e8BI0wCr4(wavr0so<}X+$FM>^w#58 z*3=V27BFBUU2E?@xA2@7FO0(rXQNAVbC>3XfU4QZDsGlNYq80k+=+I(B63nE%h`vi z{|Yl#XNM}q&T=aGd=(;elNQ=87KI&)0%=UAP#rtjsNF*Oz-86hh{9oV`ji!g??U09 zH96S0y@S4C$RkhulZ9W$i^wFM&?g z@UOu5(IfFcf2Sj{f2BAQ-w=-ztHk4rf2Z3ow@Q=&o!3e#gYG{**HqBM zBIj@;=U>HR*GMM#5|1PJg4Jrh98gq{MEO?F$u6?Fl`J#5r|mQo46-|_K6TIIB? z(WCAUKNuxd&zk#W?5oqbjtuJKzzXc$xh;!4wLug~l6flfVpEaZE>PrKrXtl9G!om5 z&sfS=Xw-m5i-j^<4D1u84EL;{g`U{N5)=NN+w%CpX;Uhz&UmN}|1xP2aWiam878m} zQ6aHz@zK5}Hu`gyW_{GC7AKUTJvUu}oqthUHh?d0V& zJU>+!3&p__tus8d28lB<(Mx|ZW$U{wm@L+0Ei{@2i4E8~D6HY{6#1g?ITx%*P1~_X#E7_>pMl@igKm z1nXw| zzX5h2LM=IjdU;L1Xb)fh8`jZCoJ_K1WFt!1N&{5OMnPxe(yUWklp(X8W9bB{q`iR1 z*QHG?r>cqNB;4|FF%~RT*uzbA-1;|6OFNfl?Q1TI-)Q=#GuojgB^!N; zNWh}_`s6>isPRjTnI1}o)$mot^z+IxnsLZIdL7_B#kaSKANi%mx4vSG z(PZ0rHfsMJfw&`zz6E5!moyiV>3p=*G@blddb9(3UZ$nl)o9}d*tSyB*KfW|E!$Ws z*5cxq#r`?_95GyX1RO^Q@%{V;90{5mFvV2lT`%KS92n#2ugsoFLCl}*1LQh`N7md^ zwIQc`%`s1OkhP?D%a=?1;Fx;70p{8B@U$CG-DEB4zH(88L4vFwQ;#Uw+2J$)@JrNm zU%6=de)0HYP&{sbN%Z9A-|fkjEqe0Ct?30C2L6?jhgQhpLH@G z@1mN+chQA+>>*L-dGh@@p!^`Jh2SDs^zbeTt3NSwCt;8G!)I7MBjJP zS2a9+0pcV7qUe=aNNm&zuz$ojpEMtRS8OshM%-(!-Vz;!Iim1(M&Z-NW1-Qa2gIY_ zcpOPp|90meZ_)WQQ&kr)3+WCm_mm?rvB>WGIf2cK6Uw!L8QJ#>(%;6#GCv$9!z*X?QW~zCjBkzgby+KxhI)R z;2zbeH0#8TV(quQyqBB4_JQu!l9p}|d&?spog2mD#Kq#6+3_s4+LRQMTe;b)Dap`< zJR(L}gI2fiE9~>7%b-=(@xXeaMRNlV1UQg3y3Iw8L%uHbm-o+|L zq$6jVo?Glzhb6mU4Xda%LZJ^i58{RKzdsLsE|#vxgGdA!cPG!x1fvQ#(2N-(UjOE3 zy#Cony#6voLc9%>h!Fv2wvu^wa^4nq#zyEVyxrXDFr4y#nSgj6mFWL9-@yt(TGHcWZ?Y< zK4J~;{7raBDwND8QrLW8ZE#|p<% z^dlIq#Kn@!qn*7_srV`_Zno+d+#Ur#V9oHzn(-h+gj&VxeyZ2gP9ThcS|dX|+?Ge>sf^9rWYG;oZ5}CxXa)6}vCvSi+#{v;ng~a>hlD*fiFGgWv zXBo>VlU(5+EykvxT_xZvv8&E@@h0%MX$$QLeQU)r!@LQ6bQ)Igj?iu(S$=Vgc-TTh z;TrzV<z1S(XxbF`x7gjc(0KT)W z*?dlkc(!0ACE9tu^qp~9`$o&+fMb{6ME#dV8 z3A1VaEEcmrI9^t7Cm&&-tPaLRc2SSB(MjK|f}`(ft4eJui>B(DZcd^~a}Yi)nhU>t;+3KyF=H zLjGFV)K&s8r zhdxEf&TGqcJ+#eCj$GY<3rc&T(DCf*K9nm!5c9z(s2s8e}yJE(d;jf(~wl4@z`7`w9 z4^Mef>*#qd>y^GOPy#w)hiW2E1d7~1R+@Dsj8`WXK@Bz@ zWQLB2XIfJ8dqm`tykcwte+mJVwWLMjSN^anNZ;MFgur5wqF0j4!tqNp1O{KVWIjGx zZQ?TdfRrdbeuYXLMDBkKQrs}~FbUI`>FeXqQY+dUt@!p?(F)frNGvMv`2T2o6ZojA z^L_kg83>SY5+n$58)d{nT!PV>IG`Dsfip6J0AW!AXwiIKP$|p+YJkMaNXDDXrqwDhic~Lqz zeJ=5$kVUFrAXxvndR2Spq5Nr1Yi;~jZF*%*-BbM>NV_YfE0 zTz%C4otPn#ee_IB){g{8^h#GJ++%;PXYuR@F&RKZ*m{(uc`RlzCMKKfj4Hjbkg5jd z-x>YT?j|vRJgFYw-m*(PiWh%yk%jEXS=D*y<{$b{Os-9hgSpov#Ibc2e}Qi~>6q9} z!oHBY;EoT%v)46bzxb$}0zZ9Q_RCx4vR~2{V)7On+&0H)#iiGsWAdJPE2d$h+Q4e|ekUeh&Z^GTfTUY|L`E+AKvXS@=BCrH;%#%BI|~x8Uc31Najx z47xSb;rC@N!fB~<(Z$f7|kj+`8ch+bF-J$zZuhaa#r0EQ`dpAu5Z36 z>)Lk-?)fpSpAlDtSw9P6SU7f15t&R@+V|>jJ0dcW3$Fif*eCGcVoW)Med4x_HnWO$;M%|kCuZI& zL6742MEQmPVmjZo2!2R$ zE?EzM`Aek|x=HS--B|@TUb|0EVoP1}sh8(7yH8JMWh}h!`ezyZhcA0|9cTc?L7(xT zZdawn(eeEoZQjQCJ{@x(B}!3654Yy5-vT=ACP+%_ydtW>q?!j?j;cRFNoQ+!uNNQb);V&m31^+MECdc zmtv#Ztaggk``UD@3T@Z1Nsg!103u{TZm%cD>7g_q!O9Ui_wil)#$!7?EQy{6R)I$8~5# zOzbOURdS80^f#(f@-TqqYf%BIs1sJ*p;{OUI}gOxL0&7w`O%7Oew11{@prP7|9Dg? zC9txmx(L|(@OiC`f<6L!VgX)!da4)p47S&0O5dYVY2l5p8qMmW>hqhJVkgRC?>CAa zDPPZ*BOq>kRQ7e{L+IgP5-@j+oWf4fe~CoINIx$&eb^oPfjNDy3&KXIszpppIH-p@un%?- z>hyURa|{u#M}*B#g@n4NOKl=S3BF|D3$Q}|vnD0{27UV9H>qZJO!{b(60ZyX8_AT> zB|fYhy^i~8rnqd2vRTFWGrArf+1C=$<4xktSu`L2_)2sw?h{umFxFflOU+bAXZ>(0yXK6ey+8yuA3+Z$ZV4mys2G13~ z6NzrkbfPkh2BGE6_VjRTDLa2xsk9GvYbhh~V0LRM8!Ic7_U@2%#BM)s&Gb=ar6T?> zri{^4!+)WT@nmcc;;NXWsWRz5zmm`BlJrQQXv;qJQa8PA?5MTgkdEz*7>%|XhuRp{ zws6E|LAUBRVzOE4rTH?-m{8}qRTsy^zEc+JeNhhTIQe>+F@0|J%IWjQeYjN%aG4g+ z{#6Eg*rm?1Y7-J%?45ap_xSa;uH?bJu#i;i#ju^wXMp-JWYf@R0Gtud&MD5Uug}(J z=yJc>ItQdtSfAk&(r1`%h~ykOcRIWm9Al}b?_A5z+O)bjX)mQ+X=cXn8;Ty2b)guUK9?76{~gm#B*lv&x3 zBv-@OTZ0X0JiI!d@OMh`?v?pdz>6vggDN84~Zd^9SOWoRZ-y-<17A%_rn_&8K5;0BHjxw4Qzw4c7C8k)5!3)5~F>KfwvWu}_=W1i6LUw zs8@7RZvlm^rB8ZVF4K=6f|rD6$b?o}(w1%W-1NxRtZID}V!xjOb8t-rVBZo8uzxgDnD#%2jqw!s z?^!fJ%FkByU4(tfLPT60x1B6L=+;c{b;;pRF*&FYV$W?7SuJFpTv7n2$vi-itrm5^ z>Z7pK{wy^=Rn0XAoCk{7qC!h<5qr3%h%MTN;n-Eg=I%-=;%w1YeZ8w%n0a-`>;M81 zaG9U4q%o^@Rfo()Z0?>U${^Dba9gYnEikLQq67*oW{g!BNlEnViJ3_Ou+QyM@k2eL zP2V;P`*}ECa+i3uG4bA*71D*bJEU4bp%af*>M%!XHx7z0@)bmp%aBZM6m{3&w^^*i zuVH#LQxf(IR?3-HAYUIeUY&SV^MKH}-nUW_pI(Hk`6(BeC4}$EnWNJ+WT7I|JK;yS zt|w3EzPD)kNHw_)cs5;*#XrSlqCNoG-iAEeH^tkzx)3d}8X3-(`JY%Wn|v4Y*Gw6a z`bmXjNp=^+WSK1^#zi7ZRLfaJ7jU|LgQa2ze?Jf)UM2KZH8JZj?azy489~B>k>?v@gq$zn1>I(N?c~ zed1Z!^rHKz>3_u@t>uO9Rk7nz5R+H7Ogzy@JeaDEf&VbzY;Dn;(w*fd5D2p!(cD&h=FekTY+0& zGwi~x(q^2Houn1HHEdUIfI;CG$R@}INGAY?0`iGll}ISSf&wy%11M4w6iQ;aa8(18 z3_zijjcM>g2gn)wbbH~9X*EU5U3CK#{J+lle@NW`Wp8ct{rb8A%GQ{7#LKN4pg4BR z|JUvwK>rWgJwVyDOFkp)+T8<`%`xu?v+W+Bgk}!y;y)&&kLmJm;I}8n;6A4xHO-uhv zL7aSGNkxNiL56CxSmmZ)KC^}U)>}k*I@bEtp&PKWZkUt$6!2;$39T+oQIo_?Kep;z zTV_D|ykyYKhU3q`EC6k!|CW~aX8W3>;FgomWpx+GA@VA@;8ZIeBPCF0Qkz9*Kd{(6 z(_ES#c!h4wG?MnC^sz?fSZez(M{j;l`8h0^1eflSYm71-h)n&uClxu)OO_40xurwT z3Wk<}fdUMk4=hROmB2?91?_*>71Etq$GMjNDR!=zhn?yf@TL977ft5cOP19%Fo)dg z8Mk)z`ztHSKU%ZMc7=3zAd72LQ~g0Zs!2^lJy!dJp(tC z3vc9F`fNH3>$p~7fqf0HK9I;0>R02tYe=0T9}WB_i3ifS=1S#yz4!219W7Ry`H&sr z@Oh+LRU{H>X(ZnLAu1s391?!;e=|=S<$Z0KIG42$Z_BGuIoP9G5O=MgS z{3ORk3~JNcyL0V^`N&dj7L(IyfUY(M$i4=stC;2(n30w+YGCYmw2%1*;9k@%+Qb%7 zS1pM@px*($^zKMTP#g$nbb4SoBQ5eA*+bo$X{c<)P0!%W*(|O@ZNmfZ?nouhDlE?#ChTRDei%$!)$G9uesey4@qx2 z&Ef&7LfM`LJ&)JqdItJxO4=_*>Iox5y6-Di{Z&#zjk=4iJ%Cj0NR{BR6ebi}rl1c2 zwOhm`YTrvAYqcI^>_9YI(F zg~6Yr%U74`w*63iDNpFIua+(io4ER^_=-R-30e$u$a4iM`Eeg9oO}I@u7|#&b^}y$ z$%Z!Fz6R>P?cMBaW?>`*GV;9p0$1bLu0|zr^4?r1d?@{I6!&PH1R^?6&H*46FxmrO-4$j|_ zf6)1hvk9P#Gis=Z0R(dMua+xzeZx@)E3C_#d60wcg})M)x{)UY-GL7_VDHKb7CG3p z!8r^O|z%^T1@Yj98CE^%N1tTlXH#V^>uZJZYmFd5^M+Dj#8F zq~l_gQ6qQpZJRpu&@u9|Q(<{GRZ&FA=|ejC1Q<Urw*mb@Vz%V9!3a@&qC8YkgLeKo1Bg#BIQ zS4UauRG=T62U|K>)uXI%-%(b$GujL>?_{g4*CIWiS?jXZ76Tc>Yqae4ldZbTw;|P~ zZ(;tcAWGHJ?=ij&KZz}Ti@3cUeT=p68122yVx~z>*!H_IT;#N>QA{sv(+zi7^{}+R z*l?{yr?4DFw`NLRVF(1oQp&yn&aRq7+{-|%C3U6IVdjYT6w(^%gsEoSAC`4Ovfbsw zkC(^~P>R>m2j3F$;I$7Q)F#nNFe}D18r*}>am6@Hu$8CK-X#Y0aWO6eTKW|+_kmRx zflhcF^U5H}U1Nba)rePG%mmo|{jpX(G~yIoSci#@t&+a~3_r%%c0Xm-5hgmgX1c!n zQ(e%%iT3!@v6!9Vrv%y2>+9$!8geS)dkBA^SKXRvqpbKfH-msnx#H%Pig^D|=#-QP zegLc)`L8z1M~;<|xT;MLg8~|}GB{Y1c68dCyn=bSJ$u#FWHO^+5bn{BZo6M^0 zi8q1_{!e9!DW&(;(9q;jWNUZ_X|*36)IiL$X#7lkD?qT7Qi4@R zyT%Lmlh5f1$YW+bpGmRca>FQ;2S#Ly_mXLo?OEpo_nIyVGYc&FJTSrRo{1U;Mi7`1 zF}w4yoBj=^vH$2R?-PxlKH{M`*|>gn9eU^j;(<4b6AQ7(8p(#`qKzFo8N9gF+O^PL z1&v&e;hz9R1a&(GX@UD#*iYJwX#d};(b^l0A7i=LGSL4`G5vo-2Cldjyy2#Bs-TH@up-)SWQWR2#(#XGnMFKA}FAZ{vGxYg0H;GKL0S@7ZuE+&QrFSk8rWfe1ZU0*93(u9*t0#OBzm!qr(@Ob>65KgSI3_Z@n; zSzLSp4YerJvEmvLr(PGP?Ry}l8*S$7ozwMA2w-U5{%Kq$?in#Sv+HZTE)b-NY1#z^;)3&>t%Hr8v zOL_Yz+Kg!je*C?2?ZCMcCQV)qC~-08Z{hv&&toI|WhMkvzBMHCa>2!ACs%iSyOSrP z_TgMBrGre}1RmVw7-6?1lbCRF>RtSOtL|1+Y1rz9Gs;@7?$n<`ei$#xK5Mg>gtALF zpdK@(PmMVqa6TNlaitRa;C*>MMX z+T+HVyFNf;Gyy*br(^Mj7$YdRky|@i_xK!mJlP@{F=XezMLcvB)Y}hZuPVhxtB$a` z)zR>^P#nol9brZ{t&HWF7-5QUJrNK=4O#zrK}!q<)=m+)3E_! zm!W2Pr;AT;iu0-hd&Y1;m@7{Bww_{iP*a7+g9D~TbQhPE{o~$ zeqnt7pUKn2eLtbU+k0U$O#4abcC{AHt!Y}R6*S+mhWflqYX}R&KHWZTnp{TQcaZ17 zh4Z!ry}4~%_QE7i4x4#Rc=2kcR0c1#>4SCYa}_tqq0|<*HAU;NYxxEN2zXOu@=#kI z3bpFwcan$KEJQzMa2Zpt!gN^`u$7#(ABwED$58HGS8)C?wdbTEt~RRux<@Mi1VmC0|Dk@u z(##VYUAAP){N4nn0E$e!{a%~S6ZS)qI^U(&x)YAK&-}3kQ!AHM)%&XB`OG7cyoKy| z0e0$*NRsPTb@ve1)@sR@#AN*`vYudMtv7iOQ2x>i7lr(YOZ&ZCn-rI4`+-#qrY+}9 z%P#6Q;;9h}T+UIR06JZ-rq0Erp3QA}R#x%!8C`FmXkP<yMZDDg96i(aPb>J%Z$Q>GiN5bcbX5m74%mp8*aQrF_9DQVNdlWZ z6@A{H+{f4_ao@pA-C-KCAh)!v=36N_uFlU4P^xmOO+3^6>gT?n5*A*= z{o58j5Y|_5=|M+%FY^1o$!)9i_NYx*%=H>)R*?I*E&ihY);xc3QBV7sdalLS=B>^*LJb@`uFwY>PcK-hMablo}tCro2}X@zPgR%)bZ`fxvXlZ zD04ztqmJA5dd#u;v#JR?*BdcK?m`sXUhhG$Uvl9KmlHRNW7@!1nQud;eR}vHF#ha% zy<6SNHPiOXzgO(O&P&)57;JDY<+_e<^pUKpEH1xqhB8vEC>_=}LvbfG*!3@5>iQb) zyGdDeW1hO+_2aG>dmTHg>Y1mFkK`j@?SWh%4tOj5ia#{S+-buAHAV-V*3rxL)z}ChOG_ zqL*;B;$o_`gsVMy^%n^|(35MXNvPKH*UrmOZagnT3H8ZPzUh;pWcAHZl(@wB#Kgpe zMEMu~4gV!@wG{R*KByD+fPUpN^KzwztGOKJPLJ0Z-?=JnkDfeh_&0O46x(PdI2xa@ zJkAwgmRF#76WQb-ikc#elJ_B5AFgu3llfVCH{4wRlsq>fD_8@5(E@9fN5o5ig1lzV z*J_|=yrK+A`NNQviZ{*9R+aaLz-5)`w?kGcL+Z1F{)VuN?OgKjJQ@B={`{S;ubz^o zC}Py>;d{rzTa9~%ACd*P`UQ6EDQ@*AyYC~5WHUkHO4ka{buRE$B=_evDIr{FNC?4e zI>A6c&M+KWnMLVU5Vh_ERa!&8JHDRcS(64HU@DOx!3e0W1B5Kc`8m(iresEY!+oNM#*2cYF80N zXyQisj#?mKyciUY(24f~(JvC=FajotXHLK~HS?FAuP8-M+ab1WKAvp**|LYwV(5ol zMLdb`eVu8ZUiLL535pV$VtgBURY(V;DvoSB3Q9kX(5#w6A#r(FY^C z??fEZKZ$_;RGhzql`Hb;I4eKiPf?2edsuk~J?O0bYdoM*+GlvO?PuE7e&~KXTepMP zjm(4_Rp7_j*}9DmwythSi!-Z(t*haINoL28V4nKDJ1~-j1{d`sz*XtwnWd(r^joet z0&fF*9nPwO^X|-f(*hQmClg|TT)>YH;(CKC0or^y1jjsw1RFySfm6{WcK@wI5B)kF z$7VC$*W6D`YT}>meXm0gjZBvwWir#G{LqXU0t;!U`VD^Xbg;o?mQ>9AlukJgpQlR@ zY*R%FDx5m}?hEPnhBs%fQ0%^sB@a&QE4v>kc>qcU$g+q@;XQ zx}w-iPyJp|ltp&m$3%{>GNKAK(}<@DUEnII5NUcEe5el+6lD!$bjZWtmh~De^iUzT zJeh$f-!*fCTQePl_Ntb?nSPRU?Q38x&(*T#+^5zMMU#z}%%|4K9K#gXCr?$z=Khvd z=yuIv(T78=fi0PntSJ0BR#nzL>DmlMtypsKnhb>}H0xiWi7YduvsInkr}y++&wX`g zT+*KM-9TVWCd6(rPR_aNtOvj+GuB%e=##vE)^oKfyyWVhzyc&t#gDL)s7=CyYN$qdbH;9r|0)TQ<&a%+?-j=Q zV@^fJ|0#*8xs=HGnK0i3;p0+2=eVXxN-#^jd38uHa@Y>cofMr<{bhch5#)@!MwDNT zX&B_TUBw65uMsB(VWVAiIq9RKonnw2+VhO~y9UYK*0#I&0M|yuaa&#S5{HUqn$_Wk z2XA}nDJ5A^n136gI?@byRp!FVp2V75bJGMk^PaOES zfYza7NRTFpgjwZk(~uU)2&)24vtgS4AcN^+1=YiMB5q!9A~xLq5G$jhH=Nx9}5?SUfN`Q>`a`Gv=trk_jvWbLAYXVdEKaNV($#x?XjY#rw^8^tKX0=tE>AE8bLkC1EaFJ zIyswoea+&QlH;HX%Cexb4veKnuuk^CBXiD-Y_=3e9By@CiM_N9yIpuZS6>;@ajB%$ z`{VrVJipG>&s@y8PrQ6(q~HhkKrT+2&5Libt_J=&v9d=6oaM%W_=Q=7!e!7v3Y zvplTp`d@y~b={j~FFl3D?zs}*_Y9Uhk;_+mCeMF-5uK_d2g((i1Pn{tzT)&Y;Gr~O${B~_#Rp;QObqCMe19ITC0+&fuY{3iZrjC{{HiC0WUQIwR5E9@~nZi#392caiamB9VM1>Lx9RCckORAZuY^_zc+vO$W@EW^P)`db+U zUgoMaP}*VcW|SFH`3cyWY;y1z9Te)4@Kwaqldd7q2YN!HHqo0u)2pwsOOGCHQDY{)wM2KAp(C#4D7zzgjNMUBUO3X+aVw{l*iw~B38MJh= zD%xR<#-JPQtSV>^9!Lm^cuO|)s(P-smmEOEqwMzDB6deT))$(K-k`olEOZf){yb91 z3e3rMgdOema&@GcYspTqBwYzxTnU@GZ8uwTUw4`ta_Lg0@~+q#$uL~vC^M@{PKfkA zmNG7-|0Lpw5Pbe{b&Q#7iFvZnjXa?~T<#TQ2(*l5%p(rPa}ldDDq-h8%k&A-1NvF% zNk5B-X@Y8w_yyG*i<*sQRmpL3UyAKfYq&SVjbDOWxl6C(dQF~o{S$86Vl%6#JcU6o zhI&jhD7s}2k+^uA@0K|4MKlLI{n$F^Cwe_DQ|z6wW}dLyW&3>2wQkj0?pDV_s2tw| zF7t^0ygvo|nI{cg(15qxZJTdp72lpjA+s#Aaj|{*W%6vkKq2zLdu!~z)LrgK*KoGZ z`5b5K@?MY|6?P5jbsLv$vs1GtgYZyyip3@EBsQ+gZPP=`f5e(;5}Pc>mfk7WS+I5Q zqNCyw<8%9EAwBE~ligawhwNfy(|*)-;_891yXjd72IQ`E%a5pgkn{?gL@)yku^Q&T z0b^gPL&V^j%u97>4Ksg$=F9f11~LCgt4`1w^{`nOOvWqeRiCZEjf{)|o5c5L+UY2p z-VKwiQCxotNt#6QOKp0n{y3U~oUV?^sZ;DH1B&!d#u+))p}lXMp-xbDiNhyb2}3*I zunEgVUd6|CK=5;IST5I0Z|(j@=W1DJHZC!~PTiY=ES?=0(nC`a5%gw|Ep;D4XOOH#kC|}ogu=}2Xr$-E{QliW2HhbdF2r4~A`u+az zh!$w7b66lzRK%0Nit2O$RPeTYU^=l3d=qi#(?hrjl2YCl^puvqWH2e^@rU}5?E|Ti zP#-pl)JsFU+R01x7a)@G{2iW4(Y#KxL6=8}u%aIF;DxI^@HP;ukI_iu!t!YGw^>16 zS_g6uhPV2nfnj<=Tp+unk4xR5){CvX(!x|Y;TdXo^-=8VX7NpHngX23dm#WSoA+I~ zRhSc|uMUwzh_`M5SmGX5_877ECs?^U8lZDLXOfk(QIo7ZXN;M%QDe-Y&en7PHiQ0( z)iflEOoFqyHPcO};p;0;;;tEpbWeN&x%>z#S0|X=IU}vcqHl7uQ6sH9XObDL0yb)r zSybH7rmGVYiQsAyZv&DMBvS&>4MaN4yUbHexCe55{=8dLVvlz2xk)q5SMz6Z@I{*J%GdEy*R(E!1Rh<}* ziQ(~>k|D>#VbJRB?Khz^)#k{3)UPkPB6{Dk8u9x^;`gKup*;yH&u^1lk5(dXJTO)7 z2=)6;*Tu`f>(E0T*h;l0NON#aBN+}ir?`9~hFR6dZ!} zzs02bJ5m+EZR`zsbJ{A=jQrJfc9}$1w3oq6*9alxN z3s0;&V)D8Yc|oHdA1Ol!MB)FjggAX)F0NFBRxib)-|UjS)VE#&mmOO2V3I;h9!yhG zp9g;w)@k6gLwf{#cWB3h6AvLd`0iZQ$ZjEPvzWP*)HNVau+Oj;PM=m2Zo!GqVdzNC zlwI1hSeYEGe(lN3q|^mLy5IXJYf_y=0y@>e0T=T7bP?xL-|uihVsLO8Opee zGL)qkWhmENo}oAgWhhFwv;N}Z;$%qtSs(tN{3RHF|17h_MEM1BGkP)^@=ubNPv*XZ zW)g|-7B&!#YGYBLyT}Ybj*1s|_orYLERH16Pktfp;;2;7UA_u^07a6){l#JVDunzk z3XC#~&m+&5iI&K-MQn&X4-%c{N6WH`Z)4sv#pf|^+2Y~@IQYCn*{V^O73uXwzRpYL zTiB{m7WtAe|NJ7~;z7!yR4Ex(3oV)4x4}H4CMy{85|#zy?`QonBwVrX!W@1a6)*Zm zo)bk<eY9bWG{8pi{(GkIV^He35`Pac@U1NjBw z(sF`axJ>4!_oDndd#zN&vkTgEl^28)`HsXP4O<)P8Q=xbj&EIpofN&NdMw#tJ$dtt zn$4`Lnr_MRT58I>Z3VFzB7F*8z_s;r60Qr@90OJtn{FCRajrEDxNU_pC*fVa27WnT zieCHN79dT$$5tHRv%TyD6q$cS*@sQGM9dh`xPTfAqRQSSWh$ z7f|3H7V=p^_wUG+!zHT*LD(S9iV-1?(Y`86?dI9-5CBK;SYClli(xjgbk{zbp{ zr+_%9R3NC5W-2sQC|Afi* z0$zF$nr4P(t6TlTrS6j2s_IXkp**7ATJs1^XA6D|J)7ShS*F<6RN_`d3gOn?Lg%H6 z%|v!Dc@A=t(#2N!_GE9IR*hk;SCT$2h?7=oZHO6o(*oxW(1askM?Kqm~>_pw#FpcyIZMEJ3T-}(n1Ua0go;aJUJJ!GuLd;u2cUth%pqUTB zrua4O0XqyTELV)D_rp8~J|xSAK@5^J%aY5=hT;+T+#8Z1(95e^`znCc|CE5*eqTm7Xs;9e_C!>-Epma zHs!NREEnkD3d#@a@l$|!4nw$EmMJ3PYqG<@+F2mx5ui(rD2UnX**MlJ>h7Jrjc;`S&Rwa%iW<-KhBTwBTPp2-6iTd4T;T*n+Jne}* zZIw|KsH2Jvk>ItFr*|Vyugjkz%X}4$p}TD8XH_FM7)avt}bfTqMDdm!cDlQeU`?DoGVv zDxaysk6#wE&b^Ve4;aC;&ZkF$UqhC0%9~42(zAH+JUp@&UY^8@`D*jScv*;-QO^9^ z@G|?-aQ7EQo(dyR<0DTz@^mwj>w16cjiHyKf(205szG+|4G8JS9hNC^o}Sn+o5k!4 z5us6ZKG8-SpFD1Wsyp~2iGZLsJJ{f-$!6Z=J00&$UJI3RvEba8*AAu28OO5r@s;{%Q@!new9?h)*M*8qFx0^edXFzIfr(KeF;W@cc(}NMB28 zO=`1vE|PfPCE*f2i9Bt(B%~j6u+;R4ojBZ&qobHV1rEQcm*0rQ%%`F!XQN~EO~P)5 z5yuZa=izL&bT9Sb-sN^CD`24(NC8}b!qR2e9-d=jt2VX|u(NB|&*@H7Y^FHiesY+8bu{pD$AUqYf`K+H-x@U>7fFt%6O8F`V;7;#Bt3S`q` zbP8A_kuHur^^HdFaaQyb7t0ZKqwNPTrcRZE@VV?%o-@PBmiA8oz8yFAZ^&rL;K5McBHta*`5@?S~p1osmrX045S7k%9DE?Qmg7^-tAf8tu- z$GL5+xwrwI40DOeyu)640E#fE?6R%8?oK$&bKU{oocCfw!nEtqGKrzsEEXPvmrYhS z74?8-#tbW~fM!O>MIg|_EXm$6294At_WLA3l*@A-wz8!|NDR?NYByndHF-$`swc{4 zTcPi<5mm4~Y%TsObb>f^Gt6%FG}jWR^MqY8r_bTr$-z=hZw*^P{yb(o*kB3Bf#8&- z!*Fer`a1G_lrnHKp*XvLLl;H+_faYkL$SlHCHHn~iDM*j>PgL0x8|w!2yrJ=b9J8^ zvYH0A6qbNd{{}JgSZL8ciP;KFa8=OExKs>xet4{~LUJEFZj-bm-t*M}Vw{L-Xx zk)#l)l1GAHniSgcM)L+4x#ZmIAiu2ZX(mafW6}Kx>ES>DKP=-SS;=Xe4b#0*4BGbI9t^s?xrYB;-wNy$wu)s{kko8iYMu* zSKg= z9=3+zkO4*r%${VN?i3;kuc%VReGf$0due+~sp8}NWe}7qdhW$7Gi2N{BOF?B+uvGs zd(JFNGVI-!gn=WY_HLbB@gtkXBQ<1SXaXBDf|PI&C28q-MuFh>YoDXQ-x~#@3X_9f zkrK87(R0)Lu(vC=BrBdvV=9myUXMR3|HOKfAKQ5bF93gM>$6MzEna#M*fs{TfLs02 zusJOS_tveMZkDwlWz-(p-o3s=?Tfo23oJbYD;)B#FjqMzy4JxXAba7!v9B;c0d6TT z-GH(Ugq46{R}}bwEZ%S($5ap-Bzy*2CB&NW<6-f(0jlx3@%xI2l!rRGzk`)cg5<$} zoR#H4s-TVP!xn8HOTjBsfc{nddc{ned=PV0C1Jm+CETT1rT{^Q;UP~ySUG#-5BVe!Rjp|dI|wNxAIx;koOw<31O z;r8L6Y8>p27O^H8kE_k$sQ6YdUXFf?{Sfrs67TJ2Y>C8c>LKkS(ysRzpbFvSnJ@ zuw~XFPMqPI7}_1A+41ffT}MTG0UT9r7P(Wfw>67h4N`o%n50ktWHf7yNidZlADUGm z#u-nCMRx;|L?^6^X7OWu%rw=I(0`oy%SaLyou(eL6x+bT#M&aV2*b8n^jZQ4fo7s! zu(gXjmLq_mL*Lmh2UFc8HUNQ5OLw+{)MzC1prBy!q$c3cIj!rVbSf@v`CnK>`_n!6 zF+?C8JF&uF#F=0SUfOm-D6$!^(f#qtw~6N<9{-pM7q>l*RqbF_Hx%!!4$EwuHmn=zO*BaPyEmy-PG$e9Rcje%FwaW|FIlZs18 zxTjJP@ploo)g~blGI2J}nEf+|gtPeXTdq5c{~pCpxNc5_|K0n);(vdA4*vK1zmWfp zvi}wTJFHmv&-mB0O`MZI9p<0^xBP7_<(Zk4O6dF92ENbP_F!G@NgUa{H8ayWV&n@DuR}Se= ztqaEs8Y<{9yKijtMO4a;f1Sb_P0=ipN1?6+cQp%oc^+&B=pHMS;CvhMXT(w`Qod%M zI0>krWVE*Yu&%EL4v<*+aCm;!_X-=W&Srq(s6J1tYGMt1VtgMeyKd9?gXtsz-m{FL|Mn} z>OP(`-MVOTjD4qD9fNx(uAE`TV<10#nt*N~-w)%UNtZLpyeL!NH_1D^BWJe5(+g&a zb%~{lu8-tu#G!+hT*_^e%*CHjb(_Q*C!KAi*JYb-Ev`7qQqwo=0&^k=V6;r=Td5;S z!-}j$0MfSpC`-L)MjMGIjPSqkD^W3uw&^G|fP`{s>tMM*e4dcjmQN!*s+rt`oM94h%;zhoL;q*hLE8T~OhGzwf} z0EaReSVV!>8Y&C3VEgC+su8IyboqZu@Veya>}Owy*H#Rs&Gc zSL5sfMYSi|1G$M@ErqS5E0CMYReNSugDa5R-=*4+l&3UISM$5lW%N<;W?j`?U?w7uuqcK%*UU7ul+aQA3FH+^uFql??fE?t(>Nsz1`OtKQGC5BEbVC6XIya3<~!hoZ?nD z`5Qb%Fe-DgD}#Cd;3G-US;^eGOkq{GCa|j8;+?E2j?P@ps>a6!9F|;oF9{UD*#yB8 znpRFD1K+>N{j0DL_mD;$rN^JRoSr(!?XLH{pnW+Ya`S^W_1c$r= z)`cKP!Na(rWzY%*WNAJzH*y_pu-lSJY~QyBt&oh~8}=`Qe$IL}S!dUFMmeo)dM#lG z6Qi{!{616@rPfEP+b~-yOUAy_L1p}%<9yHMgj_4$`>asmYJaXSNXlvub6+VWPXz!YyyAAr&jFt~ z0nb{xTehfMm;LY(R5=1^cVtSGcQte)aew-urC?s!*SteUHS#_Ui_P`mtv~c)Yglt& zix~P@p+fad1s;^F86e5hxV3 ze`X48>aQaUEq%!(i~|O>UXroHljGD5wkW>BgRdNG@|9KMqn|Czr28Y0d-C- zBow3E={0ac6Suuk+3aud+~f_ zn$;$HhW%2_>hAO}WbXhy-a9oz`D$v05}KN!d^a^i`C)2?a&l^h5?7d^bT7|Dn9R!VG0XVTN*hVTLlJFhjYgFhhBuFhluGVTLllFauWKSLqENv)i)m-}LJE6$;3`7~-oi*UAd2i=amUq6PF{m#>+| z*STMU5Ts98K}nYt=4Klo*~(xI@gKRmNqlfO0RN!Y8EGp0adlIO&yc(^{N+xBvZsNW zsLis3czs8;Tzo>EvoX=stvj!C zHYdRsOPv$GD)GDD_yvA1-oL|do%2VfXRqXkz4*^Ab#jth&07M*T;KXMNHDf;fMI8o7_c4!&5tboF|R#+5tC~v z7oh8W>(fMUZy$vg3l1Yv)m8JlgM)BnDqVsxnqhX|6b~r7xddso3HBM{%jU z>l_wq=Fsc1>KvAkl0~205(X z!SyK zq*_d)F-e9&PT?BNA-vv9Nw$mIC}eu7Q{7mb&=aF7vA5T+Yt_{{yZR|lfX}}_JzS|c z)n*xm57`dI#)L_!qWuLpWY`G<#9U|A9`372a;i0X{%wn9Ko=5nAHHtcSJ_MPAM|zV zTt6P*)!&-9mb{Hue-ZDtReQV1Y)7!F#3Yv<1Y{wv7KyCNk!UR+ab^UoawO@#1I!4} z^K9#jKcq8ICUlfvz=upv<$>w_?P{XM*O}@`@dv#ry!0eSWp1L~*QmQ}dtt}T9f6DI z_k$vxIm~#kML)*ZU@}cg#dFbyX?RY;^Bwd|==o#m(HLnJ_*Ge(#cj8zLH&ISTy_~C zwlRNhwc5Xpl|jv}^e5>r2I{rYd@1u`1Dv_ZUh+|o`b?}1FFg*0{PKQ#ZJ7+Ehb$}t zgh04S4~Uhu&83y5#4E~efu|duOErG`V;(mEf;J&&5A+S%15el2n-#@gS608-tiU97 zF`hp$p1W-Dk{`!axB&4c(FtIlDo-e9RzuNpP($d_;b_akN8B@m&g_c*sJ>?wJq=Y9 z@2{QZGK_w+6#09-@jFye#sn&AP+$5*eYJ8l!=<+Hgl#;b!4XJqbOb84quO<4+rzc4 zE88BfG}nWi>cA@QBXONtKU`77>1m{%!UI0Mg26L26q*)2t~RUdt406vIQ*oR+vzu{ z+#X*(EUvmgq?k8Vwgv2Icn^*WfI_7`-?OL{E2I( zmUR$HpKxoY+8K0SK0F%7P1a)VZP>fX^Dc>yFIyJl)xui|`EjEdK9dBx&17QXu;dy# zr;Wm~Tj<=^nZzFNPAZ5{XtJ4>?pmQRKY)yp_`u(U&W8gUXYN3*nWlv+WnVKK)ikPh z+n-h{p*wY5Ujru%ICz#rAoI70=no}Aqwv^h%{4U($gE*B@KrD3k9`eu{Zxku7 zpc@}EE1sLV?=h?5xe@tX$u;7mxi!<>GM^L|X4tR0PMHI{(M2^O02+sr70TkTmdSQ- zB%9hb*T5dhtyAl3_S@byS?xs&AhpzBK>soB223-5orGw zRjNpMAfz4mlGMm(pFt}MSA*C&wqXk9*hWdK@PJL!WY8i)RkKfEj_KY^|8Wm4<@I+{ z4?Hh*DvpkUQF?(|$9`{p*WDH>T9PGTmJ=-P)1pId*ZEp3`=s z?akuyyP%ZQMeNOe8**uNbU9zaA2H`>DU>5=C)l z9VZz2&w$RlfU8Fc8B{aXg2AATNp)*uY+zVl zk_v{kbl3(}iv4S_E#K@2c%OCzyvqsJ6JFkkhy7&zGHB>kkpDN*T3%3IskEoT!2bBe zHp5>9+)b*@!v8kSCQQ?WJ>uCm>>}&PO9)pFd-5WBn<&9IBFI{_6XgrIa|W!PU>M{ z-7a+14ZDb4{szxX1FQ~iF-b;W$3Av$XCLQnV;@i4DrE`|_OY|&TtWrYL>i+ec`xnm zz?6MFt;>}C?2|T~m!1I?$d)_0cU^d!I~m+$x&Wl8Eem6baz`A&3L9XQBU>seKUomFjvEoZ=O z$qf`(vLWA*9>sxIG=awB<_WZB=HH6(XzV&3w`~V&z+oAe%c`1?7S71IX6jQwNfTt! zVU%=x*QAV+7FhD_tZFl>s&Q+kPsXE&-D!$~J8!^k$qW=wcIU|{@x8qZ6L`zEHr=7# z^BfjU_4qd3J<|iT&s}y*5Jj0k6wo(#u&#mKojASxknXk}odB{Dq99l^Az-O{m zvnQ63vp7@#0*N6D)~;hbwS1u+)e42H4_BbZDK&Z<_MJvCVmy8wmU|;w-Q(c@5y%*k zkXww9sOGo!L#v+W*F8zVC@O(}RyZiIuQ`N0sS8F6dnXF+vH!W1N+_kTqWBgrSD62N zpyw`pT4DZ_1Vyo#@^dQ{&xJPA6#VwJnX>VlY%}HNV)}-F|9{{*MG?7f5C*c!tZXdd zx7Lf>I#CNZV3R%-)3&!#6x5iN1yf+9TWBe8`uBLQ<(lbYIXx~JN1cT7>}&e=>9Smh zY?b|Tr{VHXya1`YT41@83dsw5{1K0DAg$FhE4Co?f^RjU8Z-aZ@rqJXY#E=-9=|M7 zdEaPRdGszTTSk_z^+KZ_c9ZF%_}w;acW^k!%2JXQ1$&ggfv7G2c$%C=`Bd@BTTpRZ z*NV?+A)8_7pomsN-*sE2M5+t8ww4-M<0pDi{qhy&e>|>BF*nO%^s!V-HWf3rYcaiA zNDbuarWFbi+n5N?eo1?51?{mewYkoTJ9mm${H1`B>~q7BUEaHf&uZ70Hrjq6(_Ni{ zbv-#4!4ico6}(V7EYQcx9WM>4vmLnJX{M%IDq&xp$%)=KwcSGXTz)gUBO=QMN6Cfw zbVg2XrqX7+HRrozimX$6ETOJY>(wAf9(lfU zXNg+PsfY7GW?komY)`S7Mhvf1y!kOhzb&7J{(&*n*4Kuktq*h^lle`g zRmaK}bwWSNZMl>5igt)I2ZSD)+NtX{(^tc=m;fP^=hs=;NQxOdYp+KLdFoSl`GYj; zmdK(H=TXsvsp$WYxp$9`qR9HjJC_OJS`#D~6*20lQBZ-15=SIMrlCf9Bq&PIptxvc z6^R}B{t62M#l0l^EXtEd=yj3@+!phCZ&@2T#& z0IU1FzvuaVUj86Gbvada>QvRKQ|B@_vFV@R!RlyGbh%2Lu=PfkPurPa71XNaD%j1_ zm{swWUL`+a{B}Q4#cekcRjjb6A{UE0{BhvEGmhgJHH@~X!6T@lZm^&R5Qm~W_7Rz7 z&b#RssKNgZs8?QLQ>yXFXND<|1w!8O8BM3vr`%@a`Tjj6FM`p)aa(nNn%nZz=C-m* zF1P1495=TW#+=U#GxEtXpg-VVCb9CeG)(bS`VP?dB=<5Y*rickgxQa*qOwglVyY-G zR_Ii6a3GHCGoDrP>ffW8Wh{gW0@o_(k6KB7i+>A$fT2@qEPU@V)BHEp+pM~*wtyT_ zTJ{9?<3F;YL%?ba9A{}9+0@p_A27UuH!hQcULHD?%EGNbh&EYm=lajn1!rM@q|gU6 zWi79_9yS&Zwim)7R^%T9YhNCQ55Ge^bSj&LpZ$;EQTIJ;Y&|>;Blr#Y8&*5QQNLgG zAcHUvt1Tdo#jexIt|LYgHQlh=StZ)R>q1w%PB*&_J9|4|fLLvTlhuyM zuzs4;I!&TZCaWFM!!Fv>{y6vSb#{q5=ds!mS$5I$?T-u2UT43k(~H%PxX|uf zZ@bP#XRl*m=8hi)6+AcyGly3o9y*o8!k-@nC3Frq2QD+41LvE~0fslY+`88D>GiGk z9O4FByU;UctAk$R)Jh7P4sED9`P_dE;c6v$OG85b=Q9r=0eGi`@oRd&j|9LGC3183 zAORS&6TUgc50G-Pw&=0f|Jq&`{UkfT1Gr zD-WGYXBEfVevRn)gm<~RWTK$5U!qK9LcO9^LVi~Ec)G;OpKUWuzIMdeia{T|J^4DW z)$`+D^ZFkRvm#)(H+KLh949+m^%id z!+(W6C&kEuxfvoniMu~825=2+xsljrY}jp>p;@lc@O7;_a&DoMvp*ytdgepd<6I~_ zCxP1=+z6S?0-?Qb$0x0Rd7-$48nfrNKoOn%O6>5ewP5g!$R*#|!Azmj{?J13W4g|7@=m%l$w2!$UxM(_#Hy@n5Uh$v+u}!5z>(Q_ zaoQc$cA+5 z_#b{47>z&v2Oc(Ut_-+a&#AXR$kf|w(A%}oBp&@q4Uj%GaPmoG{9&(QMh<^xf%U9? z?u;A3$roZb0{c5^<`ns<1MyFPm&Ise*OGOF)%a`43M(acEjebyjW}XNuO&;)=){b; zPE39BDJe3&18(9wjNCIC_MFl1wP!S38sG5LSi|5n6YoRjf5k?>@gEDN$VtoV?m90< zthgo`yJ)HuSCP?ReT_GI87*eyx>I6VEQ}WYbF}EQ(V|BVM#p_a_tTp%i)-Hgjv;@x z)t76c4S1tq|9CJCw|cCNzGt-2E3OUuJJ!beRvTLj?D6im@D-!n9h8E#7k3%vhUg zXSCTdu1)(p)@BEXBq?NadK{bj}dN?cnYOz;pV`!YA)$W`S+UHlGcs*|_AnZYW|FO_ zUr#NwEo<~%A)nbCTtJ)WPGdrMvZ{$$gLa3ba7rD=>mP>srXI)LZ@jE0uB+NEcHPiewe)xV>$KUy?qveRg6!zr9c zu?fOPzphfa(%$q1_KI!BT?fQjoen}=Nr`tX53O4|1Zn{p8m!dS7m9~Sk~*(w2xe?! z5qOv2MLe`|Jbh)N5LYXa?!jSQiF6*?2xd|XS_sk$d_U}jcw3ZTPd-<@bS;%_QENjNB7?+Ν2 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

KtOiG-&VI6(Eq2v!J!koXi2^Oc&Al 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

oc*6j*ks) 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≶j_6=c0VSobPn)eXr%;Qg6}q(&R+5WJ?rPI;BxsNi*Pn}t_P?93>5?K~jy zTE(7eRMfu*OkP1Rp#FU($KNT3l~+n1xh@OSHEgHG>R-Ish{9fv7`Ty-%qUz_5Tm-8 zoOROH`pG(%ej!jb2v$vxtvU&YrQ3+tHDISazu%zXxe^tGh`;;jy()MP+b{9#Tv#1{ zP4=5SFXEo-q^B~^S#2bqMP;6)_02{WPwj#?8$1i6&$v6R{6mvxw*ugaHT0G&J|0(W za-HkGOn7ca=2h{0K#HxyF@ons*eTDc>lHjZ;qZdzsty*OWilk5x!Gc3|M7WypUHDa zFZ}-Tw>+L}x3=$k`7%Q)o zd6qRT2Rrb5az0u_-h%rK*{b_yg=b4JP86(+_mf7yG&i727`PrR;k$!oWi1x#C&jrHsDiW)bXE-StAKL}b!mv}G z>(?rHCgS*lXC}6?5Ih}wB%XEispGTU9{&6Nh!jnK;~{5>r@;9&)S#ADmd-9M#aJF1 z#Kv+SH1{^{O&v*NAPX8Mo89xaG?tf~C!9P;sH$o2A5sdQY9TP)fSqDWUZcSD1`aPU zZ9vNvfvM7Wz~t|GGk0D!uiM|6@wdEGlBQSvOCHa)?N(+fd*t;!W%Pd7A{Y5N2yZr` zaQ7b!-tj-oD9oE1qk68KPg;KJC!aLSB4GP{8362RQWH*oO@MX5PQgZgrU07@hZkTw zV<$!d_Q-B2{&eH+Fpgo~Gc2bM!uGz1{rq^d;jz89 zna57uHa%9*o2c16+vV8r^O2v}x1S--8icGKXg$E{*1|`Vn~K*i*r~rFS1SCK3#SnN z>fGAmuOmApe{Ip!{#w4%jQ_2j=W6=dKUw^z+-hptSHr%?uxASULfF?D_FcmM>BtmK zpU3P84Y+SVYAX3QlI2A9dtF?_Fx;tfB=587Qyyh`v&V=-m9Lzv>8<#oYVkvLk`MI@ zJ5)55;O5aCsWG2tzbp>$xYJxs&&|K1^B^viosSY;W?px=!}2bd*T_76p2dEe8Wxr5 zNZwaQ|LtLx5uWFpND?MnZjXM_noR>KoqS7WzQFrsg=O?553{`4Zv4$1T(xVmrVsvu zPdE+arNyN!w@I4w<2yUE!}8mBg|b=DmdiGS_Ecd^*nj$+W`1tsXPTLvNg|i!dsRBT zLn^O*jYQO*ft^O}#7`7a+YaS~h}w@@S)w*{J5Psx?swn+mpjE@J$CUMGftbdpR4Jm z?yxzh8(WVQmC5oW51cZMB?lg|0KOE>9k_zsO`(ygUwe?{%|74AJW=D2Bu(G=J3CQl z#L}?To!H}zpJ#I;={%#xNxu(O(ywgdbI_cY#&5yHQWJ56>Cka`FVc*&tfu1|!<^hDkKxF>-P%gQ&TvCv=XV zoV@V|0`n9yscL2`L2A(7>Is<7P)kvmAAX>KISz*xFf*E4U^e_(ir312t9cgw+T>ZH zFz)~AoM&}&0_gav#IvZ(vx+`zgTXT#Z#H;dyvBI`e$C`r#xm3gKu^uzPbJ^SB&TBS5q{7{jZ#-xL)6e z4fF_4=jyuRdVR-(L@clEdWA<9?xmMWW-wnjOg6h`Y#!^q^qWTstAfy>8pd%=1e%I< z#Or#nQ%t89D=@A9*n;U10ixbb~XSW9FJ!b*#)% z;wMV;V@rMWI-_2wJVAPMabLhX+})0_AJn>@!?$7ea7o?KsN0bcX9b+X9ek@)vZg=0 z&b~lOLD-C$Vc%uuhRn-mOwZ1Rn4af1rWe-n6VuI)5I^-tVpm?Tt|ryvVZ!Rwm&NN|uv1=7(-gdZL=_--Rc>hE zwQRk_E9t(P*NF8duiH~oG=1$=&gc^s_@u_9si%Yx(b zKN-h{KMRik%w!y!877o|ouX%fd4xWt1^L z;5nvZp_-N*bK3`{yR>~?Q#wQWNsxnUAb0RL zE$3=%CCRtH;M*otLhBH8cQ0}g{%Kc6-+wd9d$<)I+|;tS;!wsXpIyLoQu3Cb#6KCv zKbbnMOzN~2j?`%lvz_GKXMFGO%HAE~oIMeT;^#VW0dc`U=sI>d8P`fUpWfzXmX{r> zaZQuq!kKBBUX&jtrLwSJoQvN-E_3FEYKq`{@eT{V-RDK{ZJN%4FWoTN?4IAH;EUf+ zf^Y270KvDF)ReO$Mer?$od#dy_Z7ic9ETUdH-K%xX+DmXwN@Ix8GoqbZ^K#^e-~5J zH2u~k&f!k$4`3_=wW@ctL62`5(bi}axA;nwN&hBM1Py5rZG);enoi@a2H_NC-@_B}``NMZ# zf-)r|fC7m$-BI!T|2vSX;O-v8s5z z7km7Ws335|Q72GGqC^VY1mho9`SN=Rs@G7es3Jd!6ouWZ2voyir>F|fRiL_p zG%irpdBuWi-Ae2FwzO_ zJIz21Ic)}AId&Bu={M-ARrM2encotU59f1|>g&fSQZwd{5ID=hPI2yT*AxtQR2Hv~!A^M&pRM3& z$KeIfw3-&41wNH{-bazcs>}cMOUl0ZiOF+y0-pam%Xp?lhKu3a{01AY7f*@ddU66| zb;U5*?4B0Va2>Ua@R*NGtm1LHhG4L+l6buvcFN<8cNIM9;P8S+QVk1_Cm%~ZuKlX! zaqMF@UPExdx6m1Ryq3g90AyB6>EgS5W|t=CYx41W2U`>vQMKkIBengc8C4_hBdX&3 zj@QYR{fyVj9)dCk**f5Qz+_S*_NXX$j)0x=EaX)1y!xJnXI=DX5##mqk0hRHH`F|* zePqU0y9sHUzWp?hukX=6oIj(z`kgdQ|HQCw5%z_R=4$%8+)l>#d~~~}KDaavw0()X zTMh1mw^(Ow{zF%#6U+y7PnbUV?Jj)K%dZa}RP^J6Pj(O=>_duG-k%5}HR-t*1^?S9 z!YKc_$qN4caeNWaThOmX@V70O_=jFs^MCfC$$47Cxtd--Q=Ttdyd?3QXW^MQlJk54 zZ!>uQc%1RPcHHE-^iS{{;+N;@m;CT-zn$LI2&Dujb~?@yt|D>?j>yV=9tGV4-1#<}v?0gnSOt*1I%&#CE;W)+|@%k~-5k>!iBPRKE zMA;YpIO5l*r^}3%u@Iv6^9poxPZPa!VevnDV|rVdqwS! za?99!U3yHKroVAgp05X$myl*ykXEn8kv7BIjM#p7lp)Rcy@_=9??CGGi}Y}LKS;-K zB}f+|i3gmoPm`KzU0K0(H|&(_8}BH%*1dN>Wi`)ZOU$6%8keH! z`A*35MX_=c(=isNXR2_f*<}UOl}8xUEk{hILvMrWe7{U5l=H*%#Vv%X9fg2$zDN!i z412sFUXOsC@+>q{!SgB-qu^N={Zs_c&lgKP(=MrbPFrm9Z1rM_rf)wEo(WS@XDmYx zPkxR29ol=+k>A)?Rv3>AZH@p`7NV>VNlL+SxXNW)@E%Cx-BWsE!;9&uG0Re;Bc`Jq ziF3y+bGXBPKb)rNL6Ld1?Cvj^-{tX$G)<3W-^H^2N&X^Rd|!msH-Cq7-v;At#&|h+ zi23&HA=9_6Z1{GAU*9f$!H;iSZYI7RoRZUcSxsuh$)$yVU9eOCMow4wHy6$!{M#9u zZ3+J#St$8;%SE++moGG#j;Vw7Pv7(LVw0ESyfxl;gZpG@*1rq=|D5~Lt=4F~buNpQ z*%J?nGP~h02KQ~lWV3sANM&}uO@v)_6cnoIdn73ZTa*&my24JeJ(#M%_C4~ez*Y`z zVg$AYX~5?1e$e;}YJR=aOn#GVqyNEC&Tk6%IUgm|V{ztihkcMB-+*?VXE&g0q4pcb zv#z~G_PA0$&O=K{qv|iqL{+mA59Stln-R=Uu#b^Dtl$ANnD^X7Fdy|B%-^%lsZz7W zgpI@@%Mt@PVcbz&(|d!K)aBfV2nM0KvSEUG`r5K%o~Fr&QMFxl*$Oev~se@P&A zK{?@kG_xalL=^oaef=sIlA3U63Bhq1?382KDGHAFkXQxBmK7``5*B_TDSa&cJQlym8GeDc8DZIf9|JaipBa|bZXhf#`3=jc zl78mc%j*fzT+pk`pRKU_hEZde4i&F!z)pF7KS{xJB@(OPdB2>6=dgJa&(3Gn@z`XZ z$+Jx~o_{(Bo?=b#qba^M!JnIJf>*`*)&vhi+jN>(9~jS20uj$9W*Wky; ze*HKi)Q=xaeL?)#XhwkPWjZM(I~Ege90WUcV^D&^jTewVg&S+2?TVOQR=%g2?~{H~ z`*Xy5CfBW~+1Ku8{w#oomfMS&fBOw{&s_F5TAwV!CRNm*buG+aFUOgWVw)23YyT>H z81wpjOy;+*fO-CW{%+DgF6M{%s&$0W?v6B4}E-Onx^ka=hFz=p@y|7-WMz#ZnR}t@w;VsNPmd886n+yH*?Ow-DXIa zxr~sm;y0utiuwuZlb;dq-A7(jug8rd#bW*A z;vWATZ!d)|aOTQkkTf~pYFRdaT*Cq!TudPTeTDp+%cMaI7zrP=? z@b^j-2EyO>(f>q@*J1BU{_f0vtMy+`HF?*>+3J%tO`r4~$0_QmS%oB=@fMshVI1e{ zc$Tm(U^CIk&=hRUOo}F-f z!E;rpg=ZP3#54B~>hW_s#pJm^f10LO{g&}eXU;hZ}UkrO?Vee58>tA-`{d8_D zrsv-88%Tc@kbIHB1`>T5!jZhMn0_iF%bR_;fO*P>_$tfUp+izO3Hz{@lQlh=pR%Se z@nee;);xa*b2M9K6u*M46q+5ZdSH?DT zd`&)w@ioow_)5<2XMDZ<2?5#(g@JN>EesJ1hvpTpr@>BnmL0C(d2gJBXG`=~5j=M$ zN<3E`Rr7Qu3Z50`YWks_e0*KN6)wM?cziKY)4$?&=a#X)w6GHw0hIF+x!+T)u47*f z{BG^Sn+@8ncz5=$TTR;TL!j+8Xq&%V4@VfweH;#cL_q7v;Ho;V2B~GeL4tD$*eT~N z!xWrTad;887tnV_aPBxualfMO5jF2}vsgX1;XrJ6td1+s>Jm9p{VFVt6``GJS5D56%Sh z`5+rT+zgs4H#3@BHk&kuo(9d0e&>S;L4M|g7e6FO?I=8y^FeZ9!LUaz@p=U8lxLwK z3Z7Syhy~BO=+7c}em+CunRZakbJ`3RpRdeK(ez#0_*`%Tn<^JPt2>@<~C9PfAXQ zCf@?;TnE$+xit-Y|Gr^tz_#v_8{XS?hdcP)vx%Di!d4#a@x}u_6RTOEzH0d~ z&{K-BpJL)&huv)p>7}vj);>M>^IRb**dr{?*hcDYb|7pPHin^>_LAZoX*Ka}q=h}C z>^07LGxYqOjBdyc`9@k#*xp$&H4Yn_F7=M6h|R$|&J^8{jh&-JQ{>(eW3m5JtoNXA z3#gFyLKb?xaRX<3#CF@-m>>e;5$_(Jf1?=?Ez%JXx8;C{clc>CI%Nq7h~-GPBAGbc zy$`0xJG}{|9j?OqW%Ni%4RW~J71Oui`CQ}mA=usR3OG_*6?3?{l+gzdU;*JszAbGs z)D(vo0pVr`G#51oO{D>Gcb_^S&c7{czpi^(?RRej4|ddkqhhhiU)UqVgq9!}j^s{A z@?s)-?OVTiwYKQD$YJ-ScZ)>KufKZz#sa?E?t1TAmI-&0z_KR2SFBG4puS4p08C&^1MIVyX z7-QR~aZ@mD`ulyTbGq6)P007%{vG?iUDgZll#XZfS5L!avwN_$IrYx33yF6M;OmKy zWSd`^ZfZwr$CsW7H$}lt-IUo^;ifN;phZYN&0}%X*vX3ert{ta`X>v2ZU2_*|AOd` zrbQl@dcIo^N2b6rKdzc>=ylfRQi!niGK7=5n(!Zl1l%c0Qx5p{kysT z&x!taT)$zm**!nW`WI0B_<~CPq^5o8Z=xS|i~cuN`UhL}qt6M^pP$+FME@?X ze;v`^mg_f6HoNDhtbab$k1wdyPioJXo)G=8TlDu<=|}P={?BFAKT)Os+W`96f@pp# z{|)r@bBB#sYv!hkN0FOuprH9rAA*{HTQ?wOTj8C1pU`+ZFaV8aq;f3&SkR~fJEd`; zmx9J}9A41)9bHsJGz^%)r$ayM?OX0v^Qb`{9$dSV#X~EjJs+}Feg{M3@OA97d#*|G zaAqDM@C37zg{_R}uHP`(?4Cl><^pG2R6jDg(*OSo%^?rO>u}gD`g^GKBr%T ze)L%({vWN9AJpy9&d1&yE46-ChKJW81l>VBiA9joWE-L*vJkkHes(*w^ z|JDHd(V)(!e>2zrG131T*Ke3?c29Fz|GQK_GPzPesR_MzhZ^r#^m~3`Wds%-9(;t#jK*NRe3H=7Ld7$U7!$~dp z__p9s7ra;TBbz%P&Fp4bZpijy3~`obkc#Rrk$UjKEx{l^?3BUU4i*Nx%ssMa;5354iN7oi zqS+4MzWbSVHmL!W9V!4U{*nQx`+)#(wjR5o)4(v*{J{f6S$6`nGpu z{Yd9I=_eK8^_xWhU0HuSm42Ls=)Y^#j~%;({tW^2ldZg+pL6|-h5nljxc?24&F)zs z^s`$e+h)r8k2N3_SXh3H2Q z6`~&-Z43SD0_g8c^nb?nFChA(xPHTAvwJSe`lrhJk-~G*PwL_8SBZYqhZg;fq~FhU|8H9Szb1fw_D+6-r26~J*^S>f>!As&P!HWR>LGJwP>Z^pkYy*s4O1i# z-y?TRR|b|Us356?vEPm_BiuuUNGZ&ZR!|s(OE@Mc)7Rc?|ymcXKEbJ$Y$A- zRBqN6!|bzo$k2iU9h15d9x>{d0-_nq0qOve`YA zW&IOm{Yc?C=_fVd=?g?Z>=ym6sr2J4L_d105dCboZ!`Ws4WPd}(f<+GpGx%C;Q9@d z&F*O=>mM)cM+(nLKdAvvpC|fZx9D%K(vPzc{pfK*^s{}rP5qw)(BF;dU(WR#{k~BT zpN-`DeJ#N4o>*D`I9WeZcux9B4R|_>=!e~+znMxu&O-EGv+BpD+d}`x0rZpIxD!6) z`ezgWSLgZ-lg;kwE9)OC>qqj=Nk6FpPoE?DVYldSs?v|M5dG-MLj2#=qW_}+`nwSS zf57#>OZ3~ge#2z5dxp#U$H@ATvUAc;YQWQHiGJ8E`kScq<19o!dY};fY+rCQ{+9>P z-o0d%leVBbJ9<$ztd-ke%LMg8>{r=EJXh=R{dM3DMJ6*s@(sE$!7OBW&NXM{Ycq4=_fVc>7R&x*e&`Ssr2J4L_d1A5dU|w z#Qz5Y^miosmvH^)nr>VVpRL068z!6GvryJQQr3@@os)i2^PN6T^uun^-%zC=XCeC0 zV}mM%bN6OAgKdJdn|48)1ZqZ*~ zr5|S@`q6`h_`kg+{+9&MA5Ziz={eQe1PiN-fb;5q(2_9v+U_x~VxoP(Y6m{eE6BOd1wJU&4W7Qv$=Q|aT8D^1Pg z7TKM9@cS$ta-&(h5f6u6WQg(`CY#-JS&D~6gCzo6k-~F`hd)UTxc@lO54%Nw9hH8Z zh3H4m6rw+t&WE`c1kmpg<6-bTt{)BB4gHTQaQ%kKX7~Im>mMZRM+(nLKdAxtA0zr< zx9G2}(vPzc{b#KD**@W>|K|tL--hUSbN%SL?(=_nuHP`>hM=r}psXJ$JSY962HgKW z(GR;t|0^o}I1AB_9xKHEY+r9v|N8;-V|#03J}CG$6I=Feb3Qn^9P`05zw^PxV}9m? zcLzu`)*zwhI3N5%YQn8Y1&_n9QyxQJR`6(s^9UaE&;v#A$ir0nc-(WVd0dDQ@zBl1 z;^97iBR1k;ds&9)v0=jfQ7Il$`bz{>Bc0ZbKG-RRel-;o8sHRy!kiy16rQ*8`+LDPmm0^hRw5i)r?POko*=?uT^UA5H%vCW zr=YY!LqcDP!Xjk&oPIAjNovH^hXjcouu~GG{u=#NzC$61Je zGBm`!e)Lo!`de81KPQ0x7DWHMT>p5Xe{C4oZmNt-m*n~l6Bg9U`g_UxkluM|7#}~N@SOCM zns9YG(GR;te-)K}oQ3E|&leK^*!5cYKP7q~z zJ170523)mMcbpDo7q8z!6GGep+k zL)MR!os)i21Fqgf^uun^AFk4mvk?90nL_kq^J<|#DS-aQME@+Vf27dAHiYXpOg6h` zuB^YitRE>mC;g=QTm2o;54%NwWtD!Mh3G$Q)z7xGHvOL%KtI{|I(q~Y`*eg^4@bR& zdU&>658nk9xwFoQZW4&O$lZbJ;iIJT`}kWy;cM6_g^raJ6sqAAg2EJZdJ$3ZM?=5$ zaONyEj@=DKIMkoX!r}CA5e`d(8KEr0WV3scq;MGARicoB44zXxyqDB~3wH|=>tLrO zT31w%sDRT55~I1_%<@0E(W~yUNTXp%aq6^HIpWPHaccLyjP`b%l5& z<2_O~_S-2CO@y5yDp5g!=oWIT2#6*bmVo%Wo_{`n>uJ+XK8GEt(SJW-&2Ah`o=m@( zJ*}RA@#t*^W8n}113d*D?yzNs3Cocs7*#q-Frx7-bAs^>sUf@U5HN4ibsR z_=+IW!x|QT#?Kg1Q?}YJc=Ujs@_1BM!Q%%cUcuu<^lTA47GdLVlSkrIHILzBNAF)J zvw%n%Bm$y!eijh34U^68IU)r_$@UV4D15V=0%9~NDqDUd0Cb0)0(kg>0>E+PTmhg0 znzjf43)yzqzJQqZwi>`&c&F%A;m+IZ-9+>D!sP8q*yDVxudAHH9X5R+5=H^3Lw?bC zi9#)Wy__fvBc)~2ZGu8a*eQiS%P1%uLcSFgN~3j)px~~JIU=eY!(h3mYA*~7! zMbX1WfJnin-)1=0?>z) zmw3L`w^X||>=eMSr4#_ZMWz)1g3-i907%9z-X?&tlhgoSC);@cG=Tva*G~W#9K--j zGE6qR=S2xXP+JK=Wqh-o0K7@6$~s>Q05Pyr05`%E0Cppf3IIjWwM76(s->)-1|+Cy zw5uh;;m~+SV<3958@C^;H50GLpNj)#5|)Bs{@hzK|^mI3JhrT|by zV*rL2CY#;URs!&#wFDp(-z+Bp@uXy|^pybcD(n=%PoW9`8&Eok2>1tGOay@Ok;?JV zdAyoN6SBAX_A!h`m)?R#Y3~Bmk39{O&F*i8A;n_QdO@Q! z?3Bj#q6!*roJP>NjGiWfM%SuzJlIF80Ys90#Mg{q09qP-t+Adz-!lfFjjz?U-IFW< z_{lB-cz^_-6M&aVk(m1n0iYD@6u>vZ3IOlnGy=dSG&KIDc zY9au1j!=$=x+B#z%3%X1*Z{6j-t_tK=N8R8p8bddaCjWHIKq%-|lyZvFHfzCZglF z$1FN*hRJ64ESFGx(_BKq@_kMyLP*VceT_iz7^M_Nv80d!#VC{&0>vJ*JP|1BVdHIc zcvKp$22iN77#_}{3_xY0cQt$d{SgCD&DYM_?)gFju&tQ{;51TvP5_FMn(^9a0>C4b zQWU`Af(ig5aT)>OJM=se0HWBI;=cKz;#+C}1uF>vDMJ{5N?k+*{Q8gqsA`z7;8_B& zwW$Ok6Dd9?0KueYyt-Ndc!=tW0$5Z)0bm49BLIAhCMN(OIkO3&(Q2;n|p8+Ukm~3{BE&*8G zNCJ?76rU4-e@T_};|c-bSJ)|ll)MT6y>J=<;7c?;5dbPzP>zS(gVi){mlrgK3}7^Z zItUtv?=cz$3={gNN;DQXlxVPgpA(HgNy)VTQ$gb#?3Bi&JPI1|C@TbwPtXEI&?w1v z@b-;|T!YjAZj}=N2KQ$Ga<>-%4&7w{@*5_b-IG_^>Ss{{3BXol_nZLyK}x2KPXvIo zuu}jDK?(qIIE?`CF?yf~041<1w+TQSs0M(Ixqa7DgZeQ5xzI)3xWjbtPX-{LVY1mh zFGv6u)|UWmK~B#Jz@2qM^uCY9>oc%Z026a70JOtt1b~mw1VsP{Evp<4_xr19Tzo;$ z=-!vncz~Yb28|tmFd9z`lg;i4muNU&m1um11fLU)Ur4#Q^&>&!Fzl4ZkX#BH&2Sn) zV;)+f2pW0V4&A=-aIc>lz=bjh9NsVFZ{AJ3P&@PYslB7{`_!v`_h~uyv7hzelj=!0 z79-sQM`!DgRP!yJLr#*KarJV+V+ZV%M|VxZqZZC1c+5nL6v5-K(sX!S?W^YTJ=u{v z=1mq5*J4FLto@w@#BYYlX7@x%0WmR3BCrrCKBs^9L_@)vIE?@>15Hr`fCp@sYhOTI>7xd4w3HYT(Y+aftLQ3jjEFV28GxIH$!7Po zkN`}mD*;GDiq8qa52R*X`GElN4eS&^*XIfVHE$t=rL~4SbB@m$TCbeyQiH*V{jdb2Fv$3(b!9B#)ZoSjdie78m<3T(5Qg2LeLnE z7AbDiT`_(rXfJ`(QHvlZjW&q9^CY#;UO9C*cwgeyE{)y|!;Woa&_p;3**@px)~Yz>nxMZU9)UGXQ4| z6BYzY00zDy0Z2lM&k4YHq-I>OL;zR=I|UH^OaY)AP9p$}M3WQ&;9971JY>9~rm-PZ z(5Tvz(b$ik;|7h{zcCs|3={4@N;JB?EYV>3J|`NRNX>}-c6>iqE`^=asQ*+!BN%0c zpwR~{Qv{8l*e>0^aM<^{8o>JE0zj1>3_wOJ0pQ)648UQ-WV3rxB>-J(NdP7w#peXz zD^fEiEfN5hz)k_Y`nLi=5u8Q0ZN zMybCPH0~gc3L4GPQbo|%#x~>jg~Q4&Y5;Q!3jldLF#xO3gxv^-C07`Lb%qK31|$IW zs!0I4;G5+HU>+$F2h0-yCc#btggsCI_#K&30BDAuDgwY(wtcn_z>3al0I6i7?az7p zbx%|Cf^u|UTu@&0dqFw%eLokJRjNujqVYX*!to9%8N0Xzj-jwq9Qp1ma9lzj6*yi- zixq+6vx0PfT+m64V`@PW4-eb3ct~p^;-ULx77t4elg;iqFU3Pd6$wBqe6ySY%p@ga z=l2AFA+S>bdG9Fz{ER#*0MtT{6#-y1w$L`?VSYz7fVaus+JD6}01Fxm0M1Jcz!JlR zh6@sa@CXS&OMJ7O0L&m&VkegXFc@|UAkSR|fQv|-0zgePSrGtM7>oij9yQ}WV3rBq~)@| zR+i}HfvlY9y+%sR5_1K;YOqs!hyGB|`xtpw(E9@|N(8+@m;lW1>C|2gtZ_a~)3FD6 zcGG+U#fEkag`=TB(exri5pS4mcF%PwkS%&N~d<+Ffx+o;cijcg7}Ssn;l& z=)*O~;df}Td;XLhp8b-cq?nW3po0F}c_dz{d8!(GeB(uKDm(&B%y;ajqFz_)uO=)0hEFQ(ETM zw0PHnSl2m+>zIBR4HEE;9ImbrJ>y&xBZfI#T{E88cWT8j0nN*kThsJ9SW)Xb9`8CF z>pF{%wdkmO9j+{FJ@3RmG10C+vxockoMwk|xF$x7WruRO=Z&qbY5a)#%~*Ou;|;DS zCCoP*#2ehMC*hjbqG6*DXDD3dUW$Jkhgj`9L>$7KeXr>BCl1$XhwFqsn{85t2Is2Kh<+ z(BaP8z6}OT5p3aWOtX$QiP%(@h1ucgh>G*EQG}}k!r+*`6&VzRV?BRy%8?qArT;sR z2Gc~g=eBQr_lF|(um3(U)0VySRIKZyKDQ;_c0#Wko8`sMJX721UfeZjTlL_~jeKXW zP0yT+Gvm>wm{a`8rfM49ANag}&0(J2_dF9KqDhwTd8SI)S>71uofaXB@jTN3U)=ge zWhT0X8>6yvYc?v+u?FJgk+=F;=BT_cjmj?NrTJz2U2}dJie&5?kGs&e#T<{S=d=FS zLxmps`6EVI@1$pWqtfGCUq%$b&pobhBc8BdJ+?)ZVgKG1p|RgfzKtlx{_nnmp9`Xn z>seQGYmUSN6<^Rad+%Ov?w{VrrY(9@O>6v5HEnn>%+YunVOJ+<4k$c{Gc>FYM_!`?QnNgtc` z>uH;&mCEVAT)BhtN~n%JMG}jwc)W-dXcBt_dGb)kp-Hr;k7GoSi&*Q;jT~=|8u5KtRmJMxr2}1 zPi7xG^Eckws({1YtAN9qo^ZqA4nA{ufu?`U{*d?T1a^!I_@6U6!I{*CJ6WQm-Jwrcxn^k`;rXPQB2am(+&HT0Vl{8KNjK3}j&dd1gc)Wg(zg~dX zv-s;Xcs-H7E`D@@rVo1(q(!AWk`Gkuwcl_p`!9QUwJa|&L}f<1TNcVb_%yf1tj528 z_5Hg=w=VV`4)>Q4wV!ysj>O+jv5GzKuTzg{j;I5UROgEPnwIPtTbIq4-xXtjKA+k( zqGMcYbVSdIQ4V+B_hMO@Wk>k9!#dZ-+PN#5rg^kkd~&R)KOA)4>%xaHIXhCnjW|+3 z(~_U&PN*I0no_{w4o-09=Pl)4kE;U5ln@LwI1G<_YnmB0~_p9al%Nq^Wy z)3UpC(KNlU`j zK+{~09jPDB&#!5EcRbpg8Z%#?asRS6&Xq7f)^&pA!YoYY!yKtG%i>ZKW~EM#7?e6a zVywP))D^G8-8G`8!yN}vSM-Vb&wG*gwjg&5yvA}zu~6iW;3{^8r!sozBX`85#<4|a zFWC7SL@YS0@Cu-5Y!}v(X71=v8dGrmGJVo*HsQ_37txQ-!9;(Yec$iKUhy`X7}0TN z&5)O7;ejeqE>~`4&fos$yZ+ZP-(^2UlUP=M@WgpC9*Hy7^%Igw{FE!+)aZzQ&h&&4 z?3?_4i+q#U$Tx}deUrM_zFo`@W;#n_c?!u*@qK>0#=g(sPP}xr?}7K?QooGYSwPdg zN9;`wh0NQ>RsbW02KJ5^>u`rHs-C2^ch$Tb>-s^TRfkVCNhxd@fb=eVwv~y{eegV(Lrbb_yuWKx=b-gqn|6Jxs?KX=?pDQbS z8y5b$!@jcN-p3F6lGSBB-(3adNcH+Ck&OZ#JCPY z2$L04BZDd9s>1xL!Xw%V)ikZq^oX(GC`47^y<@nPS^6V9`kESjX_k1;d_5O?PuEM! z9PYSFb2x&JudoXvzKfc}6?bsH!`1uXGDm9sEJteZh+)|qBC!A95BkJEIe}KV@-=+@ z&O0W71m@>A4L_fEG-?va&xe072sCGYZYcZN^seFX-Vqh`pl8C*4p)%jDMY3_EWBEh z*49=2E~>BFFXM|Qlr^u$;+ou>QG}f#)_aJ*D}EL)Vo{4G?n7Oy|I{3#_sv=HuEP%3 zu~^qn`l_j@VRfXQqV~ksP+YS4ZF+9k$x3k%{ZP85%nnB#f7szVg>!q+&cJoZ!9ZNe z6YDzT2+G1A>i>dKT#h5{8IEZqI%1gXWURYeE*xi1?vTa%lGFF4#zhQDe$pUh_6O*P z>CU^S{5h{fxM%*UqG|S7Gqf5Z zDeq%lE~c1R@1eLRcSD>r+49?w5e?(q!TFk^Hq1NW*aD5ujJQgRbLYL!d(H<%VrFbC zW=6LC*sGygxF(<3S?sqr%XdAVP&(FCR9~HpS+aex*wlRbyei& z*W!DOy%(41xo!ed+(Qh+Y_c(f5UlpNfJD(O%XhsFgxLS;b#TU zuWwj*=4Kx>cs_i~$Fp-g1<%e+)jTV-!{uN%6b#83$(lZ?24~t(FfCkBV%ponbP#qD zbEb!+UT14&8PwnrjacR$R?UQZ$&NB5Y;-l__JW95yXSQ&Mi+zx;u(}Ec%GXic;21` zJK;I^qJn4t>lU6{*ar=sYliuF=5DLtnY)Ra=MS+a&;3)AHN9%&e|YZ3(pnm$MexK4 zz(r+taOJt{Zd*|A>w`Lvt;6L|OEqLrOH?(Xj-8(hs4t+&KCTWaRNOy^k!(s9a zZMF-u! zJX5N&b;~@jeDx~JEA0+SdF4ai%YH*R^2#g;$ECsnaCDp@a70WHI2tlL!Ex@K0>@V@ z@0uyaI~@l!aNHl{!_lENaLD};IyX@BsDMVc?%>moL`|Ps6)Y0k8M&7&`K9A@kQ`Sv z^&Qwi&6yrD$H7X0xCowSwBF~v*{92zs0STbpy}n<;X|Cwd^h%toX*BSKd1B4vItLH z9=YOYwRM%euRF0Z3$Bk+*q``JP^2D<+=7+O$Srz+-JK6XyM1{kSRuKpZXxcf4rC@6 zBJ$PhX~IF1$BEZ2*y+9a$g>J(M|eF`~7`LJGAl}|Mk>7E3`6sUXMxC z^hx3W;aM2>@+i;V7M{`5IL{kw2{7k5_9b>hBk?7Z=h+tExzjJtYh(TJbmtGiQzK>R zPoo7-9px3}Is3GNXCKrCg6AfD(8qICKOax8-5<}~QEHw)*iD|N(-&xZ)ykZwP1N+e zu~eAyEMnpL*V~-uBDSKK^Q_3b=GS@A)i@p>8T zlxKrX1<#_W3k1);_@Iwx=e|Ckn_BqexuuSp=L|H~bqBB8yFk+~ROBpw7A(hvNi5SX zEI*&ZSvv4GgXK@W1O2b%O_q(DgJq^)maRwoVR0 zp120ckM+znW_!vtYlOZ5Td3he-~wCw%QMx0S}arbEoaisvxjA>!R7p9s=HFAniCWt zXrGa~>f~_2`8w>BbJ9r#=hsnf2+r&AK_BOjd;2&)ZHAyF_Xl&oqUQTUGn3_m7Kxf( z^+jX+S2eFucZW(W|5N{0(fb-%KXo47Y_Kdh2)<2ykC!saf z{<+lHjQ63t7HE3?a@!iTiF+}h>20P_7{Fs859aV$im4*-ccsYCecwK9x;B_rh&1+*LlUKW~ z$(o+8Eaz3jX3h`Gu{KzQ>BRD^cHLD)V|`HX={3TF@H1M7b39ub%sD=-#yAe$A#uFP z`^i5J1IOkP$Lh~HN58iOJ{lv?jU6mrr@&4zhJUZX`1D5$#&-Ci4`cHlK8(v7VoGR1 z=GRr#)%->^WTSE5dffjj19k~5*?@Jp!x}>*TWHbNRphS2yH7u2%kmmmb1`hean}gk zJC1c7XV+G54Z7mZt{H54R1YFZ@1Sh+(Y?~mN4Hr6){>ZQLgHH<(bA^o8;r)i z?%=-DQZ;>eX&#&8{;C)2bVY22q>M$o7&_k;)K_CGHPiu_Y*8<-1Ky~@a#xQM<}A5w z2D^9lCK}$$xod!ga@Ml|C?Aj->+k@9@*?aM<~r z#rlFKqovyxX!f1O@l$XSBl?OO)qXA4;gCh?snHQ*v){(*V0Um54sx(057GuA;kjF)mRD$EA_y4hS zf#RHQ!5KZmxcgdDitpl8LeCG~V^ZcQX$#d_NR86lM%6Zywbx9#M5ErrQv4G3? zeeV;t2$#ix1Lx)@A_oyxnk~IBhvH!&5G_2*ND1WzH^KTo* z1<<-_|*5k~A@5i=fJzl?ZX;Wr*T_wf^t|Na#q9>_eUWhU~j<(eX!TW`C#XMSrNavUsCh_ zp%zO`t?DFddSp=+yD8s89|zS2_E2tjMvEz69RiW~!MP;2fcRp02GO-af>?-mx-VA< z5Hlo*@%ID7Yx+QeZPDxE_2;ltgl+aH5Wa}QK_DE15Bd-eXy-$?x2C^%&0q_A{jO)q zcB7H4JGk$)WKF+Sg!7w=yF#4b(mu(Wo@v+z348v?Bu(FC*yDuV`%0pwui|#+Pl7k9 z13T8dJ z?v2WfcO7)MEu_1!f5ARI`14#7K!o*tA1j=huC8naZT=py!YC9uQzVs$cV9Q@stD0!3>`~FT;HDET8F< zVk_BVgIs8KFJD{yDfuMgPwtaW{MRstyEhiZw9w+6cM?iFT!r<8=@A(0Bdv_t{u^UJFapI_3dE9RTD zvTFalSzXhN#b;5OVqsnHh>BQJx9rSwtX8tFs_Ttqnb8qbvOjq4_4=+sc9mvx%r7gG zt!s(a@&@rc@?ws`RxET$LH3<<-Z=L+v+}d`@4ode1N%ZAUq95Kn~39f%uasnz2#BF z@xFbQ-@ZfH2aO+l^S1Hv8emiK8t{UeS1s1v4^5ed5eV^FOW^XUSU|}c0U>&m) z2CcVS82H*DEz>KYG7t<#vkw{!`nU2i*u%QcO85IS!UE_=9`@-k!S%0__46L};klrH zu&h7(f6|Y-(TIVC9f^Ksr~1E9>Hp5EpMB7$zon@^9JyB3UowDx)?e1}e<;_#Qr6E~ z)Q4-(KS|cF|4;f+^!fC6Ao`h|>fff)k0ONlpMB7$-)`!!>`#A*0Qy-YT7J*4YH^m= z!@Udm4PAHMCo5R3RUKXF<-Cq%y>uds`;CJz@_L+m;z6u;6Jua^Pr=~*_JYA`W+x0< zZdEXN0SR9)7|uRuFnF_tkHM}=QoWUdCAg~jk9C(d{9law|5MrjyeED5^97pS45G zl1VK~sM-Q~!(p^s^sX z75SgF(>3%5bNwI5`gsrf@MqA!UDkj7f70JoXkOS>yj};pMgJz1eiR2pKR#&cZ))mi zU1a6>$4Xq4e%4Lb&|ie>UoPwCE$G9aLjOKl|F!=~KdJi`;_=tie3%aOb+B9Xf2Goo z!hq<<2TlD=O#S8k`9C;-ezFd=YGI~-|A(^vzgZRt{~P)b$@;JUPx?vSx6ncK!*0>P zQKcV+0nv{Sn)(}?`pfy#kCnqJ|FibFhW`t3|9>Fsf5P=Yf&Npn{wx2Jep2%-Y(wA_U##P$Z%tpb2DUA{&fC2sa3*=<5+65meAkHVawDfdnr+K~Y3SMN}Xly5UR+ zLO3MhzM;o}Vo(Ua%KV;B^~~%+@_zm2$Ma}*d%L@iuCA`GuCD$c^tTRK{~HPV--x7N zq}cEHC+Pn>lKw;givAFL@73fG`cWQ6|EG1)55pjYel)b`ztf`sy4vVRsBm55Pw8=u z@oy;P|Mf`vMN<8ae}H}@ln6C@(+~bD`a^8KR|ka9kMc13m)1o;41*B*(a@s5r$zs@ zwb75z-n!_g?6?N~HZlIMMba;F>UX>V`rAj+f8bxyA7b;p+CPMTl!wv(NnP~AFbJU^ z4K4cbu;{0(xRLq~p}2L?ABLG&K3~V1mhyFI&|j4=ZeS^J5mJ z#})E$ZGDml@B9dPs3(%@xBMOQa9so&T>FR(|A#;1s}LK|n;1er%ERdYxGwr(D1^|D zh8F!jEc#p4MnA%d>yU?8$c~Hsuo=(TnGe9jZ`SkJx(Ew9?^f*>qliCM^RJQ)w`w~i z^3MPI8<^B1f=O|ehOC4?fE>PGRzmE=arXv!G!5mUJi6wiI(VdEF%9zQZZtG`)a`bY zM=w+6+>rB$`G^9pgFj;^KGq#SBURav+~s#8+m9zn9Tvqq7b4Y94P~GjN|V5R0^5W0 zk1+WUu>rmJ1ZjH{<)O6QxwsD6?BTSHMMIOe2fH6d#u$+;#%a8REhtj({xu?V1$}0| zn27hUKSaJ5^Zn~*DMPN967?Ak`J#CdQ{uOCq$t?0811Bp(eAPLUySy9Ay(m(enF1- zP#(&W_z&yg$bYeP21nbCh9*buz0Dl$cVjRk!s63DjI#Ik zg7|8YL%#kw5I-h@_?|x-#E0k0kFbvxhS-GD`Ua_=gYr=7Z~mYT>i@yQ8KizN8k*E6 z-D*<*K4ry?SRXz_IB*^E{uJfIHR!)W^ez@VvQzPl$^RMU+u?eU3385e5 zVe~Jmi+(JeA@rl6MSnMo{^qsl!w(VOTNnKyF|Q5(5##?#B>f_3eEllWKQog4-T#XI z5Swt?-68a&JdFN@bR4UqJty zNcwmEEBZrh!fCxj=tp@N{qNUBKNiXm`q9v$zl%jbWxJR5?~kNkB#E!jLI3-a^q2oD`a^8MX?KOtkMc13->r*&ER-SiqoGB=)1tpgZS*7B zw=VjF*>CL)FME($qy8DoK0ZG@7x&>Cg8`BD@$v{pblqVv;@{ZE^FnOGiFXG1F&*Wh z{J8d=I{0x8%Vdxr_n@K4kJ}w4Kjt>Bg&*?~>RSgt#!&iOArBWXkvvSC6Cn@BMauXK zryvi@BG}Mr`@fNgc_H@R#GWDaqdbiMx9g%G3uOrXXlT)Yi$#BQZS-IMAM{gJDue!u zME|R^Bk31O;xC*8{hK1`|LI@RA7T?uyd#8ul!wv(R$cUCp$wrP4K4a_w&dC~gwT)jF!~qNML!nG5c<*3 zqQ8?xf5Y0wAECf?(H{~od+`r3{&|t~ixlw}j)VT=k@T1SEBZrhz==IV=tp@N{cqMq zKNiXm`q9v$Ki;C>RvY~Y>8*=?JRc`w<@M(}HeNFu-C82EKC!oT)s>A&IExDcB$;r1ZE2BJKaU#DNMgJ0{gum<_n91Tr= zMRhd!HI|a%M$DH9f7Z>fZVedYzc*k^L+Go?iSMh46C-jXII&b@lP@|7PMnF5oT?Io z6T>4NECQd<{pAB8He|={L4MqY@=$*4eXS0De1U~F$d4;9%1nOzev`?M!IV@tf*%hd zbh!@sX;(ii-SOrWeLJN)UP?5HbNKgvr*-z7Bi1^*+DqHZ502Eb&i)?3rj1(wJ#_)E z!qR94OxZ$=m7z75;I@8idRx9B(h84>w!=U3{!i$?m}(1E+-HyXIx4_N~@IEN(dE@ZKf z9Jq@S12=M$A!#{SgiX}FS*eiINYWbW27{@%)19Mj`TQCCH_pInc)^G72S$R zhbb!}Tc%qPX)$F*r00|s70Ex5;r8Ool;IZ1L6gRf8nfZig6M`$Hu8jny?oNa_W$Bw z&!2a&x4Ssm*54iM`9B=&SU)%Uyk-s&Ts)pxpO+_Dne@J~4$BF#0_!E}@^&KPsD^&|` z-)$=L-{J?=J_Vnbi_hQT^GD+IWqe*BKKGo4{I4GdbGvF)J1au-xgup>wCsN}K1TLu z#m8mH-m{6a@;ma7j+d3cO;9{wG@Y*RPhP&H>pMcrLnH8g4sR4N80{Ll%7y3`@Ox;wQ9@T zU&yw28i0_zyzmzfODY-#^ zyl>|HmQ`E-^FRfeOp63h!Ol(1NFpE|2?ug|BPvc>xWRWItAS6?vhj;6Ds;i(MA^Hs z`?z2V9QV~@a+jmBVr$*ONM@WD522Ek9E^2}^1EB{i@_&e=Rh7(lp42^ z1L0BjV^Vb&@-Eh&%@w+=#;U(z+}!cqjm-0JAy!FwEgq5+TAp*VLU${##FJpDdGVNi zVp!GW`0j3Hv#eAIhR1Om(ff+PFJT+^0r{MbAY|Ow&^Z$|hL z>d4*_UDgAhzELdul3SSvcDa=~G`YG|iYm%(xqgYP%n=iaSUE>bEsW$STF&NSB*BD| z7$hj&?p8K|6}`ZUL|NI3FWr^A_~pj4aSm!b?+0-96(R^+c?Q(xYy{;=!}kHRHyP!p0o@KE-ZW;NqY-Z=`5MFomN>W0cY z+bhHTEtM75qKmV! zG{mGJp|@)Rl+^g_R%yhP7={g4UOl=YWtG8+rx8Nrsg-i08^& zki^%W#h_A_a3tW(z8@k09J`+)8}KPZ+`7xE?Snlefj#gC5|~uF#)eSNr37g1mL3G7T^sLfS3FifL)8w z+ZGp+A~HVp^~1XK!vmDSda|qzjPe#Q1m2n6%hyPAK1Vt=HTH{*dv$qYsq)Ip-wt&$ zx&Btl1MI!aPlniUKVuu8-O;Vg7QCAa-X-kv+}llhZ9R{p2;xfZW9p02y|4Saknz=` z+4M^^Xc&jAR9Ut4{+W!B8$g*FTeVA2lV}qDyg?pV{o-z{)B8ZBP)I=@ul-BMn%MU* z9682*d?<&x5=!a)jDK`pi*3zVQqke&jA=WN2~M?7`&t;49R*T1hSMS|yZMNB4nYRA z!_jq#vf{15zECOS zvwsAL9sE{jrLH|2gwq^w`~prJS$QLb%Y4G+Q-s#QV0C?YA>$*dy5w6Io|x2t zhL(>h07{~;cTOTbQh4wo3A^}bc*0Dnl*N2^tM2$2$;t-kqB!iLGG(QL-?{2WCM!E+rINpM3#z;0GkM`H zmAbYMkuL(vw{V^K>@E_53{`IGRyHK;;)Bq=FYp{ppEDoV#hNw=I$( z{@w^HsMMYgf*O3(!*~vXl6=?DsF`$r{)dP0hI1?RqC07YN?i_h(a`UXpImhfMlzt@ zZ|C2MXUp);kJ+%^)pa{e(N~?>FAU2IpNA>Aj^(vbcRxU%)|o% z=>ZfBqaNoGKs7zUFFN<@$%+?;EwVDiAuEI8+-hooKke9W;>_pMR4GBvGr%I31wJ(& zu`YByvAe9eDrKdDq+eECNXw4TalGXt2Qj6+N2B~M4^Qt@scY{U8RsS^k$LS6XrKP0 zLot)~l=8MP##{-3gk4rAzv2#(L7J2|hT79Im8_)ZCkrI-*o2ZQkZ@y9fv1N^n9KOw zNkC#Ky^bL;F@T}d?g;@xJ6V;ZlGVf(0`F0i4(jOrCYM<^S#d2FGb5xCtU{u*3xO!R z$>rghl)+u5tmXc;Z2w zuyV)G;0*}Y4*qw?N?l7vc#W8plb01Tp0Puyj^9ZImhpkNAlX7TrsU8MYnze{+vT#P zqUD&9chFLqx`1C3Y}CHiMmyW0(F!!uvFMlvMEU|l!$O{U(_Ro}*LhiaUl<)s5GJ&4-uPr8<3&FaDz|&??Plsep(e8JSZ+V_9@Z&`d@#TqkRspIlViIN#U?Lv|4SabMPTnrV1H zhx=Zw$JTTe;v!G1;ZK#+W9BHS#=up`N>iwqHf|+Q)h_&3@@C3PQ@3jC0h~L{#=2An zZ`EhB4(kaAv_%qz<}5&`gNLd;epgbwd{L>P|R-*zDO~QY5fF>rJoAE6pFT~=7JKX1Q!&t zuL@oPlW|epSXcTY?8clc^g_l@Jy2x_|G9mouC*gj9RX?=@~o-$=M7Ld3s4hGP;a~( z0?M_V&&GF450@jl#hmS_%UuZp&%NDbr94S`Ex_9l=Tetr%^PQ=;K=0Zfd3u=C1%<_ zg|Bccm?`;sLBIcJP^d6R}SmI$M4F| zzCI}7iwo*8c>#!+AuFzYxDIE~GJuy|Oc5uZJ?;n3VDbEz2eRvHN19=s6jp8^TI-Wo}o0~6V;+CE;j7Z0N-uXtFx@g9mLXo4@(nw%ziUQOxb!YuWg2I8mp zuKww%=HjQ^tABc^t@!D&tA85U{Iss!A5w0ZT(`A7t!q85F0W{JTGws}DK~I#e~z{g zv_WC?v!LaS2YfeZD3krOv2yWZ`)S?yOf9xkkV_da3au@+7D^>wY(E`b63sm|oGGq^ z0N*_5l&;OC_NF;{Lh~?wkGE1^OLnX<*(-#}e#vlY8@9qbp;1tWgfj9OSko1R{StP`E%`2OkL&- zClff3-9T27;$*)oAS*fJL&_Yo-&GS+#H$rsH_@m-EfRy;6h$&mfH zonlr30hE-K*nh(8oNCBw+?Zv~oR*ghzrZzElNwR9IT1S?`%uPXy;QTtW z8j?1MB1ckDc?@Ib9*|G@tU}j5qJyYV^M#N2OKe;bMUzydVZsdnOx2!{Ax>J}+(fI) z3lR>2)(7aO!DaD?z}EE<#>xl-4>$8zd(DEHCM!j|BZ$shK*zliF4pb7Kz3`l zIxq_PNB7W@%{!dcbi%9GYAb@B=essWL()G6#6on z*y;H|;uGASR%%Q*6gyxDI!=@{9c!URZPpONyQxiy6HS#)?wOXZORWnepR& z2eNO+(fbU+Bvr_3{Vmu7B&!3W#1=xx32nz_-YM=RWb%3lA*Njc9*cIXwn=;GJgSEV zEB%3J{`L6^JsGBeDQ6EvyVVC`3?NC~z!lM@^Un4xLGL{)|HZcGFB3lGk9Sq*`WAW# z)IXr6&#e5J8ez!KPOa3nuNpwACS&v;N9s1!zV8FEJg+OJ(ad`Ro=`E$TR$jd{9`K5 zZegxu*}lWNHkrD?MFOpZ=mvFRQ$H)JPlhl&alJLkroUF(By&obWI5<2<6P(@E0_~B z@`Y5A>(V_j0Pp38E*K4!+8MZ81gbmmR>EHaA&}40VnM>3u#0be0ZS%*Gxh>Ce7Pv2 z!%;Q1!+1EPFkn0bPXdNHrDF34n5k}+^yQGKOey04Ry*McmsQtMc&bdlM`0tf(McWj zug_Su6f-(L)2-U>2tY5V#?aB$qbbsh`}lXC|?Bdf73Q3>|u*~8fHpLeUa zR-x^9?o~~g(PXk{QsY)_$9@a}#UHq;$szo%l<}Tt59^AnCRs^6N+&@sz>`-MGE4!u zc}#Rkh#Oti&&NhT=c*3tS~?a;F(R98_A@^DM=>J5(RANR*6)_&_{=N1u4g}lR}SF_ zIto1c-LPL@+JJ1)`{&mtEPpqHu>1^R>0G7j)w0wz{pix@tfu(n;zH$!apvXEVa&yv zKzn2$Q5#%BzA|0Q2HFKJ+Oe=-UcwgTDO-sLd0AzU&vvGbG$a!ZSqt zsi3Py82RiZzV|6Q3--QOp(hocK^k~J&fJW1ib(_~nHI(TZ9-d-n-)i|+Rz{nvH-4v z^b{besri_6$6himA7wY+gD+$>ygdV}4_PSMO0gSvtG1!SHt4h#s61-s%>)_u$~#;E2-$HQ41^l+I5Aj>aL`sb1fLFYM4}X z9={=to9%V80sQ}Kg67IiqsW3;^SxoNScXdeaj=^9ku&4R%Y9}o&5FjRF@T_3#kD~0 z<64B068^ggc%h_vR%1WrE0tak$cjo@AYmI<9-}i(oTQB# zJ8H}ZsXd#}$H^`Yak5+cI+=ZdlPyhlvUV;}7H~OPm;1zL)cJFuldTyP{C-cW`25-f zPIdtQ^>wn>1_l4~$xe1-ijyspooub_WP4>N`&D+bhAB?=Rf>~6A&37*=Y2^-lhSbp zjdz1*oY(c$IDh0*9yQPXKB;G(`(;YjxnHWHr7B0UrcIV{D1A9ABh^Pc%j#F-3Bf$f_-xzSFbeLxYEYzpSo3a{``w(62+u`qPr7Jc{_xqlJt=yhg08H;|iw%AY`a zicwxKSiTF7Alz=0|3W)xs=prP*Bj-#g5@hv9%YoT36}3~?`K>q5^z7l4pOx@T#>_M zWiQ`l6suHB-QRnYpYb)K+;hNC6@3RL2*rkx zP;JU9K^=07G0Uwftv!beDCiPK+O_pRp>q`ZNU~HMZ5a#_E$)#OOGOp1z@A ztf+$kJRsWaR4LQ$7b)c5{8Di0rImtH@6fZ*pMd+RzLVMD$)b%GPbBnftgc_Uy-ch4 zN7qx72JwcHOHthjF{EMS%^o|frzpws(G+|thRyLnH%Q!xamc_4jDOu=VcaDI<5yP}GOg1; zU`3GQGz5G(Wn{sSlo>qYvmOO1Z;Id@LXwaC8#8hqTuppz6Sx|TVVgrm2TtO&kUkq5 zeNs))*ZUc7PuOO+=PO2IXFz+o*xXVKoZOukFRakDb+o^xCcZX)#?O8$2z(!Y!n)Ry z=^_)kSW7HnJhvXgm=Z$!xD_F$2^JE~N&BSO7eB{?1C5D^C47M)1~@PD+|v!#2$ZL{ zxG|sg`VlhA(s+HuWnnw2HNoYZ+ELrY50+X>(7n_R-wKa`&^8$cZfUY=yLUZ?OW16y z5Hn#;8p1P&PR)kKr&(GuAbZz0E~=0HIA35Q_4LLH-FTNcjX%5*dy*RM3EI31^?%6b zWl5_Wq16gQbbf-c_ZBMpekiq~cd#n#;2(63V!lAutr73h4~2T3N9xMEz7ZdE6Fgx% z_%y1WeFUGUze9{mRjy>G*U6dnB^GC_A-lU6LzWpbWXqOEvf|mlAiDw!VN7fxMEbu_ zscV0da@k?flYO_bx;bk@x8Fj!J3fswz@aJ7h};J>Yv-wW|LJQnYcJ9a>XO|O zXF<*a#>Y_ja&mlHm5qi5=O-onuEykIfY$2uqouXp3K4@%S8|y4Obsv)%Ok>~WYyL< zSpA)l>YKkVWLhFsm!sj5M%_a{SY5v#Qul4tZAGVib42{l(D*doU?Tafso_V#h9879 zJa(U#X$LOB(ITdUQqJ2wd|1~m)Bc&baW2ZsxMMlEk=>H7%`l?w-+1SQuI&m|>+t~W zKdL7A-a>#6l%pzlPT0jq(jrfXE2cOX8CY22d^k5K&eelMW(hp zlMm@yHQ5_v@+Fk=jt7tE+L5rLMQN3~K+dZ5&*BPQL-a+3s#}B8dz*lnV<%JCX(in0p zbXDP2m~U82)_~e`f&+Rx!81%KxE0``Qe!*gApq4jZ}Y!SOf{Ux2RP;q>EA8{)r8=th8#G)rfn09o4IB{9XBIs63~R6>f;}veK+6 zmnfdt9X}o>qrX8@cut4A`<$Qo78JsG{=isR3($9c-0_pMn()Kx3=NUm=bx--=%#Hb zQB>?}v0Fcc8IiLQ`(H#PCyhxOO}qAj6AwGt#fP1&@dPJpJHg3ro8V;qCpcO91Sgw3 z!O32j;AC?rIN1jiob1~PPPS!&lkK12WalP08H*D4W9l_;-n_nfRi;66oB0v{8q&p> z#?6};g-ylZX7q<{%7}mPZpC2J-5Rf|#|=Yh{&3k#r>RU;rHQ7BE+^A z7ywD@@(I+1J(>R4&Mh&B7Gd9T)ggr{|K}&*n2a#mw4H^yg=aFCg15x6(cdc5)p!Q@w;Z^Aa%1z{EOsWgpC_K}kgy zfW2zt&tZ{_44HoW4{;QTiw(m*B8KRT$xCiIq%W1}x^`CwiVAY8wncbaKuX?V1>a^w z@jsrf)U{SYl;YRqGCoeA)LaB4Ny!@!sa7hoPio6<0#f!aB_77_Tmm0hMikv>5Fr?$ zZTK5c!{0@u%c?zXaUn~|3Dg+QeQ}JmM%VS1WGT6f_wIa9*ZiXQb2){KSAI;KNd#xE z1827UL!4=vMCt#uW3&mPnPx$i)!2vM@RIaj57K&5eR0} zu~+cmkCYtX2cD|bwg1Kut!OY9};6A z`Mxo56V0+8M5Ak-vc|w*c}h+oEs7bOSIT(6aS)>_1HB1PRO(tTHL_p3(Zl%84+y;lY2jq7F`N0s# z(U!Ub)TjQ^^`xQ?P${h~Nm~Md?_We@XA503dT1``nuJ~I{axKk01C$e6pSk(8>iJq z`O14R3y=g!^V7hT@gaLFb$)mgkSEpW&&lk;7~i(3QuoisOQrvYOafR%7pknXHuYVM21cKts2-B7BB4R^|G<$xBCcZA}{xG^jD}nsY?gmbDS8 z)6i+Ssb6)<#h)q9_20bof04o`=8pF#hR6VwjT{ zX5Uie0mI5NGYJ;_AFY0I4=sK-jsjm`KMAZ@<_yEddt4Fjk(a?e21 z8f$Gv6#3h=53jdKKKHqYasD2We6LZ_nk2HfI1^4Mj+HKgkq>3cImNjC#%dvv8Mj@2N8kC*DyJp5DdMUFuvI=F8#p*MrCD#zs-Ky>TugOl>pxum{ zH$n;v`V=zWQ9$e}AohGG%tUDTrx3(nuVBhIL6>{Tu|~5^?%-wo#JgaE)r&LxsV$0H<%Zq;^cS}qkqTU^H(NK`0jmbPTH^!bx;uN6lb-Wjc; zB;O6VTq#5+p;UCQHKbdPZGq-Wx*cf$vxS%OL_#t94v=UFv>N;Qa*`TIeIBLEJ)yO8lY0^m)x2v{5hY|e)jy4L7AD2ZO^v6!wB+FOC>L85KE zL2*zxbBb4!l~K-RG%pEWKP;b7$aqW9&W$tabT3(sVjj3vTg&foB-F0vTOmvQv57Q* zlFuuyAkyK38k?92gLVTiX}Vw6CI|apbe)&+Z{9Xnd&ze$%>0v8+s%W;sv+13b19A2 zqw`D}7+J{=V2j}^&1%X2`W3TF?0Eb+DCZedkQc(Wh-`E>R7;tx)bN5E=}MYX$s1-> z=)MCaR5&Uy<4lFB+s!K;4yruSrS>IKggbDhn=p`CB#xIHsmrAna;D^P1*8@p7=Mx@ zwOneEj}=F9xQ*mRjWFN~$)At~J`bK=pt57D>_rLXzUX3@R{OvcX#U z_h^zN$v+M2plW;V$=al;xeL;iiLoE?hb23suf_Na5dCWz|E1>mFCzU!dq#7Kn@>M_ zi)Zl8iz;;OGk9KvL~bw3Vf@bp=IGUKtEE3&scYHP$eyy+!}!JpL@Aa9S+yS*3XK-I z&(53c!>ho5<^|vn=d4o3w=2LbIexsSSEuagYH5V66`ZYNvQ$egJPW|l;be%sh1Of( z@Kx=Hp+g@OAjb>l?j960L~b&eyKq$4>d@;ywej}u%lXKnfZqS9rkM&x`SbsPYB+@T zLhxlOU>C5H^i#+^PpJuGARFeq#;&qi2z%_ zCu$>o;Oh{pZRoxpNEd{@Rpep(k2gXk_t6j#9SsouO%O$7@7VS~UK@x8*#NO0AQt{^ zffx)Bg#v`3X6uK5h&MnS84)&qGirr!cTYe-6sy(`5QOmf(#v?90Qj(F zOG&?)qWK$|J1LSoazwDj4e&{0g)ODp8;bRyEMXUy{19J~7YJ(%655SNoStChjMW~- zKYu-xk?lSUj#Vdv%FDxzvC5<+*H$>WHb!<#0-1jU&tc~+MxLVmp8yf0>#lPqUG;&| zgXE&Eovv5Lm~`Fx6`=;Y?#d6ND;k~95kV1s#N8}ewdVl#w%3TfAndhgP1q8e{d^8X zQakJz3-$`383B9koG{qPY@s#7@kCK8eB3PV7Cv_}m+`dM{}=QBh=Jn~=At@aj=)yDq|J;484fWwVM(@aFg+rQt84RrHq!yQelgB)$ew%~@dTse)3kOHV^oSXHcC0)Zv9f9$ReA? z-_^@_GQp=yr;_hrbH>!PPSCJ~Kyk6M}>t&KJK3mH7G}(1Qbj!3*c`aUeck z7Pk~9qYv+VYcP963Jd_B2s(IV)&BZC^6cdIU`&%il4}3(_Cm({2~6%$J}JuZv)#-E=3Beoq6$GV%K@LWisN zs*%Vvk!)_nTnPaTT>8Niy5tTG9Xf#pm{eSuxd;dF)z5iE3!}O&*sWw`l&jhVr^qVfiqlE{!fwc-@^Pl+(Mkyb) zh6w0iuE6?N0B%S=yg`gy8n>7R1vXDH1IeDJ6>XR7Eq3tjZ&v7ZnK5A(-6=~}`^WJS zbjU>2WHmMe-QMh`QOdGo`piH`!X4T^lGD+r_mR1PLfA`fMLEuNIs2eOS5iI62-C*l zpj)*)H6Kq-r;03ZeBlcfI;@MOQP~Za*2}t0aTQQyw`yB9hhp=)<9>*mYJ}-~D1wqg z&?mhBHAG0dRTpV=J|2qNL_D1lg=gQW(6uKi3{uDh?)0phM>2Euz~bOnyC+zC@A-Vj z{i61>SeBA8H)otNRcHYGpU;g;9eiPKm~K2u_8ko$mLFK9+A+FxNM%SbN2aQ=M9D>T z=Exk0vOgbfwQnh2k?`L5H0J+Y!n?n)s8Sjggu0QBpEj}D0j$2&La&;1O2-zT-`cBE z*CsZB;O<7H)&#)5@M{m_ABxW1pzsZ=ul=aD{0#a6{V}+$jv5Wp>#>AgRrQqhp`HV> z^`zw8Ze_i;{fxB=-c_B?cz@BqVNQJeVQ`^sY%H_|4~9(-=fky4kHvq$96STGe&u9N zU@z*IV>E?=6^UD8yA?9NQzdTQnNZ4~&BVai+pjxmq&6r43;p)y>rOH$FSRjad6(6`*fxJPto7?&6G!i>v_r-UXQ^cyB-w2d+CcHk!v`nfA| zMN)ey?-2D#h<58;$hbrF3vmn{2fbeG&!^4gSHapD3hw{BB7|26!5>TLP%i2dar~eS zKMnA00KShvJr|%iiAMb_)9TxkrnGcK-R-ApF$28Clc5_weYHZ@oIxynUwIhM5*+GeipKw0z$4iO|mVvI@_QO zmIW^+ZfNXfy!vHxL6+z^8S-E%KiebsT)lx$8UhrkOIgV;u{Q9%@fM)9fk!!inl6gocs3cV?I($Lo>W zEd-Ee?Q}ht@u>o+G3F=V3y%3fW6T3sH7VSk?A8&ZYa8=-e!-Z(05oqr88YT281vN> zH%Kr$Itv-Uk}u}|RTc?O4mBU$S447j?Ot(T@i^S0rPwWqgTB0^6J(1$`*UVlj0|LP$eGQqh*3z z9DZ^hX%)eHjRS#Z2hp=(q$Y~>fsEAXqe8Ww*Pz?J1burkqJl9upz*0W#F&RHb+qS* zDFNT3{;x-C(Qk%2a;8~FlQ^I5lZ#`_r5N(L$1Etzs`43s340%LY(2mrI@BoRM;=DrL zD{76PI0yUiQSg8JEE?_)Q-!-0(h7M5e{ev5H)&#Ffx)Ixwo0!R`}0N2rhr&Lb|9j9 z;VWC}Vch2<+ERp7f9WmIHprlDpKNSlY(QGIO~LajSA|_DoiIkWhKy-19tH)C@$pS~ z>s9-$|IKCmCIO?jD!awr$b*iR64_g$!|+OMN{brz4>E+wm`&xF`+n+(G({2+-jhcN z8@9^*GsA3^RR_g{T1du1dm!Q?u6ArFE;HVYwZ^!?xp_YEuS;(5+&rTLg&&k4>v%|z z48P4ZCj~2*}JK2r@ak6GlJK6J@PSz^h$r?ZFWc8nOvLBvvvVWd)vW>4e zS^i8XYcR{ncD^XSUw+BSrhA-hMXrlEV_J12+V_XlN?DnS?xRE$h*)J=Xaf3Q7>n^lGLT9W8PM6wshwF|b5nRDXO{V|Tw~Af8n8AzhrH zP)v$|4}5~5&t8BqdZZUEz_?DS^(Fv32FLISh#6&eKV}SqKr;m7yb#DG0I9}~2txie z0`h$X*;PQ@NzQNM>87rlx=3<rv1G}a7au^h;GlE+bm@lyQL;M33PT$)kiyUs zGtDrxZ56>VwCd4?jQeshoh09@G|kc%A?{iA5_Q?T*J%&s{1`O^M?Y(?Um*#xDAthxQ^5#h9FQ^ZWZZW_VU;&q?Vvx z+>}Kyy~Mac!J8ZviL#~#;pn3Z8J{ZP43Q0XOgKR7z`-|QoxP&#COKOc|KH?vyjhSF z69iN8YYyX04RTaD%B^fp*u|e1KVJ+V&sS9Q)W|k^lR$D<)Py2salE|vmA|9Q&t4>W>kwj_pdzxr6)R3U#Hxu-r{K9 zZFYrToh-%JUVAVX&0ULRIY>o@EnD(yLz{*KsEEsfpGd*6uX1m*xARIZj< zBzC8!{89~?8P%qCysBC+R9ni+L#qu6uO?;KKK(ogSSKcm+8>72Uf0g*6jfv+q&|2> z4nx4-+(b7viDL+o+_LeguEpYYOCiUrMierB&5I<*t&MvJrZ|57$RSxu5J|8H^b%lZ)UJv~o-%>n2cREO z{F8`)S7ZCV?_rdni@$o8a7o6fW|po8?}fQk8Q!a`rk5b&{G{Cim#>p7l0Us3`DI@q zl9OdM{X9nJ-MuCU@n)EI^Iy6yW$aoSokfbcCcJank@D*ykr_!C_(##E1%a@?oKeVl zDs?aUz6@D6dIJP;^=VY!a5>1;_umia>e47$58B=L29=LlPV2##JRnxoC8-B2x!Z8w^F8fzaadW70(k-AzA7c|&z)lv(0e4JQP^v^`fw^tG^CT$yr z_=o3-Nxcj)!m&P*I`Mfbthj)bHzLux3}j3zY#`Z_hji_pU|%xgA^M2ECVKjG%evO6 zj1C*|oDBzbO+s~LJHMlEP|L@q)~4lG6d+T|n_%I4I7k!=no`btqn|DJS|sc|kk9zW z=ZJ)H=1lo^k2wen(ZfA8G*fKt-t%A)ZbC|3a+DkE@6xDj8;X`+J^qV$VYy7oe_qu3+) zjL)EsB;QdSGW6+|bz?YJ)U+t%*xU6-g{~!1mnJ#b&Oy6f0;h~8Vr~r9FcKG)@J}v- zDk-lX0E@eC*fbp7a6m^!>2lfc%2(Fo=Ee-U_Yj9P7pCt8DW>QAcRVcNA}-_x-^VhH znn7{!${<5AB|k>4EO&fdin5hIx8;D4;_om?@m9pp_{nnbA#pFxkd>O=-}J4|Saw$= zSysyU%uTq?>m5%yu!qJ^mNH7KrI97QGn2C#%SxhrL2A)#j;tuC(0fX9woP(uu4*hR zN%93LrokLpNs5+rLVfZDsRatWlm%VwJ4fy_ByMH_woPdk(W&|T?(zdTxom@7)C@Or zQ|gpAd4}9)fJ1r(ue0DynDO`tAnFMD3;Yqwf|Wnl9L|Z)HB?14Y9`%!EGM&6#io zGhx#omMudV)aDdGrIP6u=i)T<}?1f=zU7En%D%p?(Mu~U$N_^ zoBOgq+AXg5rznkaf3|5-Q7qtHMD&bER^jaxm34#MTkbWzl{K6teA%Xxy4JZ*$iS4R zD5ZSUZzpxFWe|xkHsvxNBapb=)2CauWTb>p3J@G!WuuJw;e*SUH{P#n+wZpcwCF*c zekbNI$_;H)b``dwR$^~&mw4I#q_4**^K-2F+`9_N=qt5ngFSEFo6qRIy5LDW5^#G$7YMnM`>`=~r5Vz7HT55xw;Po z1LSJb`cExd8lBasT8epOX;pp6ajII1X*V?A!)P@fWavsMqf}Os9C*HpqS_l&OT){M zHB-t6SZ`XPa6`2;qNG|HYu`tU_K0JWqqtfcu}N}ptE*jRS9EO|t#;Sil`$UG(ui`& z@l&-ldJkXw9PHm-7Ohpd8hv`Ipw&Sx0AoVje&-p=I*aH%V@^B_svr6tjFe*%N~Mfl z$;wW*^pzZ);=SBp=Do6#=txzQ{!S_8^<-}#CPfbnR$KXSE@|ACt(JzTotM3VIDDwY z|Bm8+JVh_bK9SmI=d8A}(%&&yZBU+~6sL4qU!5ckk4eD|N4+Gwx>|~{RR^$rh-tUt zbq|vqTcx3P9>@{58R|=p-PO|A{i(jv7dxBp)%15rjt#O79wwL6V7pXOBP;!5Wa+E^ z(Q==XnFqtI8n?1_4esxP?zm*Nzs{p&Fap-WIUlzLGa0D~ zvU4hQZ87yuo&)=<9>y1C5*Iqk%9~iJBhXVGlKGV`$8_zpDK@FtZKQf%ilCt`s~j!#2G;WdaTT>q+vRYgNGCQn8TODIpU*Zu1_Mz2!4 z)YBTX>AUh7uYQKGZDT1{v9}x)FAV*XV0F29A>$jUy5##H3b94kijCZj3BhEW&1kFTiJ?qh2nJxF@$!|lJatZGb2&sIhJfHC z5G*b+Hw0%;wcFXq2_&{i?>dEeJx*QG+-ZmICW-E>t@BW;yWh~=;i}*!uc#n=lV^zn zks!eI>>|L_3xZkG6zAVh64nDEl|Z%!(@Nyx+}0yFprTLMJc~;)_sjSTvnq7$(;gO& z|FZ-7PjnkOm+pN@JdHCmSUnllr;F;5yN{soI`CT(~;Wj zr+vEYomIlfVxvHOMUIpGsU@;^R(V*dL-r#xcBsCiz22wKiM6HS?GW6~fcHap65Jy{ z^5~f{zNBx_zoSi)7XIb)N{`9`jfs(|RME z%N)hz_%zHQw^C|q7#gkHijNsdSs%H+Qr8CD3ITo&*!cpg87Vn-S2dCxJFBI!d(0sd1Gpv@7wig_AEPH&w)4{?!4{gX)zSzL4*wCc zM?nCy2z8oJ&$tR1fBrF=f0m|yV!gR=ybbjKI2F|NJ6`_3HT@`KL1`TXQ`5uCcuN6h zMsQ~(tG4Y^bC{95!aOfKF)6rvIx~sxGs}+{M|61qY!W1bas!6!rLKJigNaP3YV7k< zDIYt%7rH}?<0Xo&Ad;7D$!C1dqhiFM6yWf=&CDgD) zx{IY0_<%yjPdq}yGE|j&i7C_H8T23??p51t2@C*lHUgbdgifd`R?7MKEr)dN#V!!y z5>)C%Anio}mqp;hcbDS>rX-Z3`Y$JFcR6N};ZPj26apy@^bE(Yy=M*%a9X4a$8IVP zhit|99>j)P*SR6@Q|;B#=n{OIRv*{9-BQ<5cm2`?Oonp$u^gYQAJ@C<7t@cG^ke0t z(ruOWqcMeXKU}=tB-h_*aF}=BBP>F-Gf3VC8eE-e-j1D$_umln6_9*^FtvN{n>ma( zj3ZuW-zF;yv320TH?^Dz$%;QUsWa9CV+{?>ev7l=O~_(xZfd%l zvfgJZ4$99Nx(bKVUp#DxI&xP~Zo1V@ye-+Zp4jLRxEaliZ~SQ(gv*?kA*lWM4#_EXrNM)kpE%=5j4yssAQcf zmn~5Bp<~9W(9-DaYe+qgj%_#le`zYd_ja*XO(TGa8rHf9fIP8~@y7_D*bbRMhgd-4 zQ2o$ROD)<~`v{mzoNl|8(y=HxTVkuF5$%fT=dtbH64mI$)V|Dj)ubpU(H7Yc%t;ZT zgHBWUBWr{Rzj)IvMEJc9F^&bdSkh6lF`seeVIlRQCpgo;Hznjw&=z%+7}|*u!ZE3f zloH9Y$9v2;Gy;9?Hs*QQ(kMDb8Y5_psg_3AHzi>HkBD8Dkjs3f*^MN}o@#0IPHd$+ zN^6eVr?xY2Hl>2b|IE*abnVp5(2b!gOZ?dR$RS-T!H+_NKXEVOf5!_do~7h=bQleT zV7z!@8hOhRv%wD^sMMt&=x08)dp+h0WXE{c;WWCVtlDG#&Slw+jI(TG>ITic6(2$?N4oW8=IaA{#rwhm0s<`3VA~mthPfBLPuI0KD3=rQYYz?|UL8&Rngx5Wy|qpg>E_|!`N|4i8`~k& z+hCsX#X?jJe?(uZksLo62Pq}|m&=EO-Y;WW-9R2&zOWMJV;TQsd4;aof(UiFIhXNz zgpfp8bb?$mj~nv97uBZXk2r4VPbIM(M+oj%2J;G|0OrHW5n$JD+=7WbZn)qfUsm}3 zd=0YathU1)o?OlodmYlXv6Lu^_$DJ)z^GATQdES@?SU)J1^6JuWaqx%TDa`R@U_r9 z@gF**5Qd?3;vZZd-=-F0+dVH@isey#@&EJk*kG@)4X02RDI)g~++BHcq#!pZ{16E5 zX}1_b;<;ux9s9hK5it&(QEs?JZykzsr4cVynK-XZ&tLOvD1+`n9PsFF`O?SA^`@X==dR={$W%*Dg`sB_i*+ngYiE z7*5kO-q1#L6eg=SJ0^{kOy_nVEIy%YKL*=<(4dgJ?5@Pgyh^LRdjB1KQyby0z`+wa)<<`#Z3ouyPO$g-ri^L(D1EX! zempsS$-H7pV$B&m*M)kcrt3ltc*=?_`%da)7d3v*~YZAomqML3Ed4ZD7 z$ly+F+6Ko9>S|{88*0(X}1u@v;e`?Jwqg)4)=(t-NeyT zCXSxijc0VNJ7uV%f%G8NK$i>}$T8-+)MkaLE4qR$AOCFWidfI{q${lD$Xxw|sF=Zp zsf&Pi9N*PTtWQ6-#rl+h&ZdhrQCVx?{~ktgAH5b4IKS$WwUyJPo8#tgwUOF)FyO~uf&a;R4`=H9)O`$t6GZb+5S0tBVqNA z`HUyD5b_1op>DSC!cZo zkgna_2E#H6SRAFaO7<_>=Q7?_G#MOeUSk`Xw(o!$D-k~Q!uTYkQ%z5!$O#gG-=00G zYwM_YLh1<5Wqi$0LMlQ7K+%jJbX?cw-T=Iw241qjtMMI$jOU3~iKdulePxR2v#5Gy zSEQ{+am(T`V{+z6I>GB1#AIDUA>-XepPfX2#e{(&hdKspOSn7zxUT(0*_nuhchT_D z5Rf4G790MkZrpV`HaTuXO4y91+&;$OV@o`3^E6@8~h(uBl z_1|%Yzb~PlJ=Nr6R||_o>t(4LA#J&9Mq3D_(R4n7k=uA0}6>t%SlL2V^k1KR-*0oRw zzhdC;5_zpgugqtBTAC0cD5l4jnr6(OsP_BzNM&Fi61`Xya!5pT+=w1i(@Q9PtY7sh zU295UXu8|GK1Hc}fKLHfr&+lOf9Y|NcmOP5Ax*Oweu)^sv9 zr)>sNqKz!LUHT2~KyH_w_jSlM9U0c7u8^o`9w3qte_cn+ z<6(r&xnpbF5!FW`G-F59nQ8>I=PQ9d0flnHUngL@gSLse zuUv;AF}QfLCHNfSK*j}2IFL7%W6de!qmf%}4W)LX{x^P;&-kiTqU`~=*}6cgmV9gy zm#Q}XRJCfEcE?vsFf zc57X5pZji~PTSe(2BnB~IXRxr_Ta|~4{Cw)blx*oAdIWBS{hqMA$GFVbtj_o{OOgZ zL(GcI+lpF7?2PLuRd-8Wi`{-0?$!;#7zPI`y+zTxs)M_n0v$4T*m!_h`H0u zp?q#h&{Ow3NR8U6gCJ>ItTl8=4!L(yoHQF(1En>`n_vBtw^NHyH33-@*3!!p#ZJ3X z5RFTn5&tF7umV=9KQ_&m*+61uY2>0Tx_iMT)@7vgOe%UARWn6?sK#ICGrsJ8B93m0 zE&9-uocXBMnR+zl7a?d)=riA16WThM5H9A$Emq(Tyb1Wr7DbGa6W}B?rEy^L^R4PePBsAx-vCY_!HgYV|y+)XF z$l>|D-q+`IA3pc}Jfq+1_s{S7BkehS?(6-&uFv(kuIqC$(y6cqMvJ8vzURDob{boUgMZFC$JsdL!Z(_LB!p)t3xoc~Nm@&}Mi+-{myZ#>$v ze-!iS@P@&*u&f=#xcq>QlA=ex`R#O9vSe z;V^3A0`J*pj`&NSFl9-*8~GoT#VGf*fGo5bOoA+HvkY0J*~3L8I?RVkzk0dnr%TLg z_Rx_|1U`2e)_=tj_-D{_w=C3E*a#1c&tkor)O+F~)~jh@E-jaf9v-MycewVOzhs2@ zkSxz^mo|(&WPmDnWclRwN@hO!eBD6#`Ry6g=-@N7F9<{747&02=d|jq!H$QS0?DF={#N@+m&-&o`g((Kpjw+WYJoU3I&J z{V%O(tUG)Jy_41*R@!Dni`*c|ZLzX|HgPcPTJ6o|bDPd~X|1VwciLaH%qx!3HuE-H z1?%oQfw-IB6x_uD?&n+aa9ZEhYms*JV?o9)hKxhEQZMSIuSMy#)E%{r92xnz@NUCy zY5pKrUvsjT=HB-XbKk$$x~v3sF?cg9Kheig3L?`EVP)8Xk_YJ+DN^KA__UT!k|OOD zvO0yu{*sF3cV8v{$G&T<(>T9S@5X(>#Kg=1YUpOH(@3ep0)~~95C;v!FNV`8PT>#y zG}WaojwL|`vAwlno4!wW;ee?EO?_*X`^-Nt2I@0)rQiG|*h0(w zUY9eoT-t-|i8S0cGam8=97f|UVk^>Dy4m*W zdUv0FtY|9E*1!7lNq@-_qW#D-QZg zUZii526{Kb{okxz*qC*5`%#re4(P0toXztXA%p3zJ8#DDdzTZG*QS&OmGwj5JpQf{^!u>cw_ua>E zu+X!(tEickwXg|&=!}$U_y-3IJ^$T7e@S=t%U%snuM08g0mK79VS`-*S9>C4zO0Q*AiEFZd3o@t3B775!U^L!aAYGdW4bsVfdi+cWe}!Qj0x#6g`eCKNXLBnLTof9xC*~ zBPoP+RmYj1>&T1;qA=Nug_QSVq1&E8AhDm6OaBgPu$28PEuw#G;QKXtp^#bG-De;D zzZmekqw+OxT_(~&N^wY}5Qwz@5n_Q(oXCA&_xf&#(_bDm;D zabH>C2QhW%Gz%Z)Y7_8L+999YxQF&9ZSJ)rewt{O6%~g$;h?G4Pln*GO&t0(xc|Vc zVY3R~i*{9?6YZ)rFWS{(QMBu`FQQ$~Es1v3|2o=rd|9;Xr{&SEn#IwsN#8}g&U_c` z3RxZP`fPo)tNq4k*Pe~+vtKi#T}yXFyH*xPyFT0(?b`WMwCk;(qh0*^%w1mPaD00I zi1_r8_2SdVM&kO+1mohuD>(5<`BPR7`X1_*-c{?C-tl;R`m+aQHSDhTG}Lx#hkwHF zYd_l+pWbl~-BuW%(=oS4b(c#^7>I#1U#pBID!4ytg$ox}x4~VML%hmrx`xt=i;#E7 z%FnWrj}IcXE34Vhw$j%VkK!gqnhwaMo5coT3DhW*0(_qFjKh@dguz)15q9)tRz-Dv zP*`r&sV@Gu@rrr2SMNTty)#;2mGGy(g}CJA$7Ln#=ePOMTB)AM2$w5f(Y(reSt;`> zJH2XH;hgC%oKGA{C+29wn-=@E3)SJ4dwQ^~pLX)cNwPW}Gd#wOkCxp9AO4J!!PB$R2rjPFHq!wYhwy!R(r&MkMGw>F z+=VY?$;u28820l3&?ILAS?r*}g9i2oc3DZrQ2;69<6MbVF1RDY&OVpq%3>!4L{yxb z#XnbK;uurL-)(GvdyKzvUI6>UY+s3~ZG4XBDKQn<-!Z*RgYQY;YYD zNn8`rdGRTiL)_C8__nlt?&(uQT(0;Id)z8cMDnJu_VkT(xw@%i{P7)%e9h&Is>NT7 zdF=M$FXT&q$rXy^t^bC}$~Jkc_Jmwvk34ecgK~%S?zB4ODZQQ;#&o>0S5DvP84`&W zH+m8v*i)UMNUtYm{r%XK@x)vV1ef7YD(t`2WvPV&Ua9kzPioi4ZDCy(6mV*I6x&}z>kA#|U(Di4v<{E2tSs&wYw z*{(RHAbo%*Dt(kEQtK62>@U45eSoKxSM45xd*SY#?MffziJ~6zP$VV>PB8&anVR};@qE$K(;zIuequdM4AYH(W{yauz1f>lc zm_;9#9y9t6YUShmQmxz_g=PJ0D@@qQMQkg~Hf)7?FC`fjxH5OY{9*3b&-p z*OC-fD{~KOyQdG0b35EoK2M~alHK0Y2Hocx+cUOTZ0}e)c(2|$zdu8RcSt^}TkMZ- z=?Cv+x=}PgAE*4;P5Cu8WplkYE?DqoSq*;TI|E0;H(Y$s;uOAm8*yq652QNb;da)UbR~$@uRz%Ty4U4Sn=E` z^U)T*JF#N9N(EZ6Ts3KOW>a5Syg#S3g15pAR9F+**Gt@tquHMhjaPEyOXuaZeZKy( z8g^SWdH;8!Xt0cFr6*cySesfX4d7mRh=Bw3rY0o0;+0)`;`LDyKaS40?K8e^vA=a@ zNl}=~wZ1aZS*Rr*g%W8xSoW%64e3E)mpT*0d+wj@;&Fweid`29uc7Qh zl&0k@*Pq}!hNf{D4Vv!Go5o2itm%ss{!`QM z+nXjl0o#As)_xps|E!CN{!*yRIpQsIZvC(AMg_{1tV_q=vY_+u(xTk|N9mOJJY*m8jr0V>Kls3Hk}m^ z&-`WJ%ksRj{CN%e^M)GF>t{ai`QXpfYY?9Z#fpZA?VgmjM!aT&f68juLz`6fZ} zwF&i&WgUGKV73@GtXzJ-`o@MgC4}*NAAkN>q-=(Bak*2Q zqJ=9h5}O1hyqR49bVDfk+Z&94GOUy$1>;a{nGtZVak0P5U8CYr7=FoSoED_Ud4}NA zZptpU)8X){L%N3~YpaP3Hq*%{`t4xd#%dMx@vOifdqUaA9|r!oO{nh<#yK^zDDb!9 zLVfjhR(v(+1i~^VNyVeGKa2W*(i1LsS{BaL>u}Ybx(|Sr0&O2$ni|&JL$1@?)byFI z>f}bR+{@mA)9lt2JIyH1<34Wa#AMx#ny#~YP4aH+RM4=MRF=In#N{dtm({Rj`qK@C z^L3>2!|B<3aC|QJ&L^KDmpYk08*7fQycOU{ixJK$1zNSEcw(u?s}yuoa$=RAhjTi*RGO7 zjf(xoU%PfW$M^M(?Bn~n?!m`*w)VE<%d!xb^6&gX3EBtXK$Wt4V5Q4NSt*Q5A6r@5 z)SS}d8d}0nAuhZlr&lPUjmWChcvP}0HUr%aS-=l1>6^`DwR;723Y2#IJOy>TM<(Mg zjd3eN^%hEp(^_<&r@iJyy^g}y#IShfVrget4PQ7CL+&U~EA2k|v`|(wNPoNb_~Bwd zzEvM5G|c@1k?(FFth-YIYa+d)oZdBtG8uzOi~4uP zJPYnqCRBDI3#}|GRkVShL(Z-dxc;w-Ht`U~?~W0;<1ZyUvVX}dhpYxfzmJiXgZOrM z%7hpf*6YPa?7$Vea!Phg|140GfcfTi1HB8teCVIOm?~r!gRz78@pC!9Qaw%W6fHE`SBGIDDmJJ?-2toLYo0 zJ40NqoQ^TjWXX*iet*i1d)%qDLII+QJN0(@p8@W))gcf*H1WCE6#qS#Tri&dMqBw7 zo;k_#%+yc}&PvCKc>j*r9dWn$2b84J)#+8WmogmO_rP16`^TFI+~22jpLS+^mz3)v z?wOAQ!SzsIWf1*fta3Uw#oxr8diM>#pX+BHfIvUfaA1#BKZzkOSK1lhOMsae+u@RL zOv;S`zL8d_kK78>*#`}J6RU7)OFaVKQb|@iMsA`GmEN(HtaOZ$(>u1eKI)cOZDu~o zow}Sn3}bb=?>2wQ{n!2ev@^cyY9~KZ@OK(r_xo?*$s4%wxTkKR`%1~6N;X{g`<2~k zXMA`0^L$aTzdhId{@4ze60_71A)S7&XbA zDCfP(R;5k1l`UAQ;Nr5s4h^wmMy z*D5xH9m`(emwu&BFo<_4D)y&b4V&asJ6`9H$<;#f7}bmLqbK;v^fuo*Y?k}S+hw&! z=&;yyZ^VsZX?cl%m3ESqLbiCaaF0F``l2BXO(GL&i$E{jn}mJ5)ldN}_?e=I3cPX! z+7K1ISs3E-stY|JI9};rFJ2iN8Lyl`O^^8JRbs6C*6nU6;N+oFBYc+$!^d;g%X zH9uFs_1zT2J&J#5FP|DFw?`1y!zG-npHFwNDRfG~u?Y}Qp>>|=DfHH;!$+`=9BCH#%8jBgoW|fR?eEJ)ep&5a*{g<4pimwiM?q!0 zPAhYUf&O2W?%~0HRP4I9$${mgKCuyVrQX|sC||1x>`J~i>S~c+tK@dMv{kvqepc%} zSHzvsE*=jBvcFmk+D0DRN6BhfZd=&jG7~0N4R-B;9c*NCn*ShH;*l+Kn?saTP3wYV zRG7u-_DAm*{%cWCRc#OERg`==hY0G~UT@V-sA9nU;z5c3b6?>?m9RD;c@fY`i=^>a#mSmNz#0V@4bB zaY5vx16}$?olHA+xrooo=-r9@Pi3(y{fkIc@AkXUzAAOHJmwjC4AQW5I0KjbvbH|~ zw3BVqPIIMlx_g}q_2YN*VFBdRdh2Yf9bs5wc%w)NGh0%gb|jL)L7uj*CEzsX`5h&N zMJRb)sQ@Pnf0w|FbqCbMyH!GE)bQ#lm9Z?n_d^i&y_E40E-a~#T#aWN zvlNBe%qa6KNt4h((B*R1Kf9j8-7t03>w`eM|HGAG9%k!qw^Ij95SCyW}e0Ex1 z;@1zgf>1BTBNb>F>>vc%Vj}3 zt=KnB$}pbL^Nm4RR<39lFTh*Y=zqyFdd~k;Wn#BB@oO~M9Z&?W& zG}H*8aH@|n@rW5AYcJc;kc{D21Jf8vTfrD=h6=sx)ous;a>@pbo-V8!Wn(AnO;gbZ zuX?<3FRA7|-X2slu_07b2N?&3LpW&aP0L(VV!1zrSEn(5gbU!*r^2+t9KGxMXzRn4 z*&!|#d-!Boolg5El%F*XK8-FoMQLEXHhwpzZ-EOSTDS98kTHE?9G*CUs?Yjnr?rE#8wGIxzG5%g|fyjzdn9fEgp z!oJrt9PdWayJPS!4ltSFnNIE2=#J|*Qa!jP6rbV9vl$*-u#O+e^cg?vq)P&Qwv>O? zmp)?`jMV5d1T#`#2y>HkR#WR;+T86__kr5^#3X+Owy$~TZT8iv6Q(=KzMg{l2eq%j z?RB=d_fm$@1^y*lzBPOOZpf|KYv;SjUhl7O+G~gVV6T%!d)b-DB9rmy6qma z*JF3Gw_vaN^mPal zzuW8Y+k)6D8?R(F>`e^F%0a|`(26QOc?T3ys{$NS63_dzBXortDpRfcm+Z+c_B+Nq zJ&@?iTDexwG?~gRU@|DcTLKA%T4eECqkTvGIg}6Jm6PI$aJg8mfD#BZiZNe7pMT;G zLNUqm{OQf{{NdvBt6HA_>E0uLnF$c=vD6NY=;#Fs#Ms>qJ`V>qPWdP(CU!!A8|J^)dcl@KGoV zcC|A`KBkXP|GPdAA8Yg1Qmr?<^}g15h2@BX-9Vy`?V|Z-ReYa z*pSmJh>6^$XiDVf)uD-mH+vb0Tp>^7ysl!uR@Y3%v}N6mTteGYYUB@Etw$`m+5NH_ zb|*C*_5}!6rN1Tgrgjw#+t(``+Pj?&_{&Mm`qMKedD?r`us&#ulCtC`Ob5C% z0#As-TrB15EGeTg|3@TuO1}0Q+EVhh;xk2l4N;rcU_-Hg9j?64`sanXc4=q+#5WFT z&t!$Tl*-zTvLe4%4LeqcFtp-NLon!S0^4c9p9Tl=Z(}%+d?VVRbnr3$pIrGQD0PMAqJ+s?fEz+AQJNvm$ij`q5T0kj)hvAB+DVhx3z_us-yi%*0xqT4%y` zwO3QHe<17$ysv~O&_4%d|5iCYyd(XQ>qSubleQ+28f*6CNmou-?I%x?|Iqx@Y!+fr zDrT_xpD0-gzaDE!b3XQ@ORLSK`5phSvH#Cw-|ur>|pUc#_ zH2NoM3-vII5EP(e1qu&}wP~>Xo&%yRt zVdkF!=;h0-m8=Kb9q_NmWDl=UrGJ2&pBG|w*CLRoXtl@~9Utm>T=4)@GNhM!9 zRZ`^FlK=Jd0?cdMjUI>fg+oqYlh&ZH;U|*Kg>d{u_7f<-Y|aq>UDF&-qCD^k@0sXP zpIH_I;B5R(%S`MlCNaPBpTnhm+kkx9=lm`Bl(jYB)7}RxT7a| zV%$+z+)+XrxuphK-5C5sK3@%6Onx~_)WJP;lbaE2bQ5(jf&Uyjh`x(-(2&0c9Xv?m z%65kiUMPbON}Kb{&mC3djw;j+FF8qJ%kQ$vo~P{5#uplkg9muVVAWcJI|^$FQ?iFx zpwo-zJEQbT3X6L&7w_sZW^n|=kAHOhjbVehrqvQ--t#zYFc|*X{O5$fKEu!7BK&UH zAQpUxHu%DM0Y6*xtF;()!im4Yf}bj}ec=j*uxb`JT>kn``oH96`0|}!?Es!^RTcHc)(5(iybt=C3r#YAdmkXJT$(8c&NkQ0uT3w!w%?*Y=MX8 z&Jqu;d8yGIb(F9FCigdK@2_MJM=bqe_$~_{Lr|F?4tpSG&?$_?-#i{JuU^}Rt+g2) zZbJX8A)sTD)dJnq0npiYjI=yUWwr|{vw!iQ1A4Q11ie0g3()Vc2IyNICNTIfK(|yu z`CNw9djm^ee#6wel5c*aWWc|EOLStX2U5^4s9Gtrxx2m)NtKeTnON5}pzbbWZU0Dl zYOZO)`bb^E3Vcu(uy(9U-Q9t8>={z?y{5ZUinIdHZ#+pez1_PzMeX`L!{PF{V!40w z@g&D6+zNjE9mu0fA67Mi?z#&=BgJw{_lFVsQF%~KdBT<0Uv%s-92T^iP=}Cq;!Of+ zzuSSdiKF6@e%jP3O)%385$0J}Og8E(N4{srU<$h1qYFKB389fkR*-hDD~poiAudzu)>!rCD?mo9oEWumeYHolutHN*0G zLx-z9I26Pkb(QQ^C=2`y`BiC06%)q4cLK)qB8P)Up>Kw=0gF4@> z40U29sOX>8{|R-L?43*3Fs1|Db*}m;~_+`wuVlND^w0>&2x_V**+1v z?zr_Xt;)&}+Q39wisD*I&V~{P57P54{pGMXQBMOws46wAZ0f1U9ne#@sHdOX3NA)0 z-*BT-inYID=t5WDanlcS!&_a({9w@dx)dU)(ws`BB)Rn<$!SrNuA(H*h%Vqu4g@yS zttQ#ble|UPOz+!ZGk-a3W|~GWfX&|U`DvQOnOu5UaNoh@@5toef14?PWs<+9SZ`9= z2u#}Kzs`k){Avx7e=2Vg^3Mx{{I#)2To{vg{1HTc^|VcX!yZgmY|f$0$J13Q!h#{L zE_Cp)h#?2po|$olZQAo03x>Q1!mv4vu>uVHDgr|X2Zm6F!JPKg&FYzY+PJf9+&N|$ zcWP#HH!FBp;H%dsBMCh*bn-ZNbSn8`ZP4@(S0~g0l)?*f z?&mVKGwJYdh3-E73-0GGYcpr@KQCTzKX*=BF(2!4!Y+r+rekU1JgvybVdFA3+w?ia z_Dx}y_k#Pm1LXR&r%o4{!w7Roa9`Tz2Y&U_MoQEt;dhw-(WPY@sNkPQEQ1gWJ&TZh zCTBwxX4YfapAh=U%0YM3c_Y5<0~M&!^a^HQ+E^Q!SRiWRi3bEbw1opTxFVs8*y^N< zcDzN{;Zvc|#YYZZymgZLk}|+E#1hAFW5n5h>l!g*{KaC7Xw-a$#bYD7tM-XbV@!Uamg^ir}hcl_FKL`iS-xa4gp<09ls zALWTbkxRbdo)YIt(ALeuZanLBFm;$tN{)74uiq(NUT-m#=e8K^c|AkWVcIVZK`C=Q zR@CeJKJ^!kmpW7B)kcOw#j4cPWfC>L28eoCB&sUaLyg*itFA$jrVj3?LfeNWO;6FtWb}_9@$hn}NtGu1`Brb-FBSneF+EftAG%xqpB5$Cv)LBy=eL_`{I5kxGw1|kkPh{!uiM0A#wR9df~ z=Rg>>5GM6SSvm&YRz|l?(6m1oM>{ROGJAu;5$~0sFQ#5OM(mS8o4 zm19vVB;x_z?y)7`}5<*Ed7;+6>=ITpHk8P!;%+MSOP&_VuuW-wUZ`p=Gdpem*EhX7#4?Ett;1lZvoL4lR&8Lj#orMatjvLW~n?(k_PN3)Z9 zRnGADx+&Rs-VXy(CE%kjC#zu(kQg{W%F?Y@HxtCLr9?Bi8G^mF6^OlMyhU`2EtkOF zpAPoU9yINUic-33Q;Hd>c(ddn8%fyH3ErzRhlxg&0s6BHtVLSg zJDd@Bt+j}_^`96y;Gh8W3z5Bg_sJMi!{yRm{Y1|Q7e8WTgsvJ!P0Kmu@;B^Hm9Ag3 z=)W@fx>Mw9wMWpuZSCTB+=@y6Ax!_gMbiI2Am%OyF=vaR|B}bC8##KlCjo~6M{o4t zP+(b|L#z2HH*8gdlEfLFNPwL1=r8`1jh@9Wmn&3O3f!qPF>T)Ttq>%E5n-=vPeu-z zCo2WWA#=+*x%=g6izkM#1EC6#NS4LA`(4&zrXrCmaI%`T0s62IfA<=G=e{u10v8Rw3kqoiFdbZm)_!nQPztGT+u#AhF}-*bN6#3?0Id)bZWdtPfvRY9Or4}?sLeihCKx9 zznRPjSvuU|ND0@g>uGrne}e=}yOe=L-^jq}bm%B%7__~p zkT!DhD&ijP>?$LunL%cbY-8s~EIt1aR+OBLeld8^K)u@-{!ov{#Tv=oq;2W13ubp{ z5{B;Zp4c6}Y%Fw#fZ@1Otlh|D(YUi-n0l0XXhWVL{&_jNktz+e2sFDQ1X?c&R9h6t z=AVc0&WQe5=f)JYSe3Vk{@JJu{d1$Ee|F#R@XvhAl;%X>{5#8v`I55wNA>&yu_)h^ zCd~Jqk463~6s0OMe3Q#e!oRNoe03`c{<;lrP&L9bUt7yKAI)d#yh=fwvK_8BQj>ma z0E_YUW}~7e9r621ZEF?M|6$JrDIwR1l#A!tTOj53^C0C;oJuKp^GAL%Nl`}Gr+y86 z2DYz%{w8(K2^;*K_T@Qjv9G}Thz+EV8BD-4=S+Px zCIO!l^|832RY2dv7Janj`iL|1(F%vPjA!u$4#s9Wnw@;ep_6bto-ZmMeU)_b0v823 z8Fv;s8R*c-lD*~W#QLKAkJoCFT0648SfwP^5sS`3S5c*dXH8DRL!h+(iJZ)8U=~h& zW6arE-;1omIHu1*-G=GdCRuqVN><_{JOhk1vBaeMwHBJbexgUFVDfyj>?L=N1;h~zoq+w)lE#;n?qeFwIu_(1mL zgB+^#@n0r)d;L>j@FI6T?-J~(wU^yC-YqTDcaPb>m7fg~xDnmu`JHWvviI(*yo-T= zrdNo7dRzz)(BcdT&>RE|C@kNS0^rwsdc5^KI(;caHIDy`1^*4;zoUxa-+JOgIHvzN zun*s=>w7rmQ@fe6tB%ENY^JX&_iTrL!ER+tfGVRrGIAX3sxsCQ8~#WiUqtsy{alr9 zoHoUKki@H1SrBi{omTbOhnKH-7X{ZpULvlS^A^E%W+}Lqa9pwANzd&zxweM?LiAr> zoT0kqdSP?Oq)HwOvcA_re5{D<5H3YC1{Qn7|2yw9Kz8IJA=_8VxB{|Me*#%Y2eLYZ z%vKWA6J)ls#`a-Jg|kMzu)O@n2Z2#uJqzY*(o1uY#OJ7B$T7<#%Y-NS_k zOZ~5crO!o{j@A{FZ!26za(@BkAOD-^__@TSqeKH8iyd^_kq=&8Xj|W)PH#S zfE{$Oq#la{_4Qd)1Zup`?>G4@Z$5GbyooAZKE)`2EGm?aWS)c6KXY_agUm^2G)d{S*MDh?au2)2ws&e36(I zlhpu=1(XBYw6dVjA z`n1pfum}}oecH#{8i?!DNFFnuc5cFmr&;4TvC27!N!i6B<;1@s!#huRsdWuv$c1`n4{6Ax#8HF*g66+Hat;NgKRhjr(ZIct4-q69^2@&?IDWgJe? zTl@T1Ocl_v$qy~UZsD1*+t&NE1q%M!gCC^V^D5IwGG!)2)gH^iXE5ms^c%ZLoBf2% zJp|;B)*F}S{~v-wRHe(uO`~s71`;)q#1+*AbF%sW^W4XP#_vms#wEN(^8d#`m<+ub3tD!DAU+nfjP`c(zz_+z+$+t!V$Sa7fVlW>1` z%ru{EM}fP6ev7l=9LqAP8`<_-4EUdOy?y0REZycN>ro8Y+PJzK=yCZRn3P$V-CbR-*cs&4fl({)_`HFX~EX)FcdY{ zfvxvuQj~MO=)ik$=!fNH=tuA`%D=Xy{sS4Bd5298v-1ql6p3iM-7aX#=3(ku&~*QU zG!@5Ngoo*S2xtyC&`jT?o1N%ksFv-HDq_}W`K)AKV|`hHflrSY#O^d2#q1)-4w8$*#dSiy@f_Nt`P(H*!_0OekVo$JAB zovC!<2Q`K7CGo9Vk=lw96iEkI_t@CB*VyU>pES6&dcj|ChpKexpsB{@rBGvn$kKPX zw$03vZ7eP2P8BSzJV`8l$y(zWR+ASjgK011pQbK$e4n;~8L}fkvK}5n}S0(B*WV4K~nkmoL3eod)x>US((Nee$K(BYFR0 zJqkzpc$ICKKcsgewaWD|VEKLFY)P3?s7-qbt%)8qfwrz3CvE-pv+3MIe}=Zo9NK#D#~}8a zcZzjStG#xb6U1H#pJTn3nC&fv^H!yPTqtx)^%P*@mP*SSod^-8ZSZ`74*`H#lfkTH zfmwe)U^dn-oHJs!u4_%0#sVrma8ru34jmiPOzR;_p4aCCj+TC5tX;vvD097Z@@bsw zBr9Q8>KaaZ4DXp(GL5wX@k&X&a?UH#u@xhaDm}H|)cV`MgN`909U-B?d+207dV!3v zW2Ezce=>Dm{U?y|f`g35*H8~#$Zl!CzN$F&$yQpIsdNAlGPZc7AYO@$l-1f}aH>U2 zJg&ONs!Um}JshJM7C<21?~C3z1n+Q5n_K5ZxQ}+)?Tpxse}E@AHaU;9YQ$40*FZMr+aXNrdU>> zNhM3Ls^bMpJ)X1G%jaOEQl&F{O@NJ00N{2J;9@^2Ow9MC1(~47dhA_~GiTsjk3DrG zB07ry^$3o3MBDa?)M5e+un08kHwbi56sVRckZnxf&4(W_E*&PuZ|5z7@rHZA_+Xu)f@~;>B8fo`^w8 zmF5(hSaXj9Yc~;V*XsgSTRzv84|ULEw_gY=@BtaH_AUU{1P9h>D}hzd=bSZIESYIS z7lLK_ij9S&G5t%9tYc}1@d}!+F2h)&N~;S@eA+SKdsD+TLUg9GX@Qpr5_+H>G z0^hjZz&F8xZ^;S^KHAvmTf{a78un<$4?;bp1rz)FZd2?BNbH@W*sHHXY-9h8t$Ur~ zV-dt&dw|4V##@BgTXsS0T@JC&en(=H*CJmfCvT&;NGa5YjzS1Fz+N%98JSVC(X{qr$QtCE+CgJ3A>2mlUn3qGR)0W{93vH6TNKG;KHVGQ8E`6j^X1aJ^8 z1rZY3$G;_?@qnx(9mhpZ>9^@e;V9EJI%1%@`36ogV6jiSn~zL%y!#|}QV6Sc-%Ov^ zFfOXnKrS5M&OQvdsUqCkSIX1pT0Xi0Zk;01XH^T_MmwR;X%4vEmpko~?Gh{0vPJ~A zPe(jU>yCwfm(6gc?KJz{xZYLowWK5#?+(La&=FYp%0|K~vdQx5r;d~M3F#8f27S>P8`-jDDkRjO!_ zw>`;QrG{XD8~!Oz-d+}YH|-;NSLK*~WXBH3TMa9b1wV3esYTwT)kvqQ)>_W~`wC3n zp1gH9g6Rjq?|q`YRm+uk6Au=^Z#a`T)FN*klJ^0Jyq&G`##GjYEzh3E;z_Esc!y~Z z2Z|x@v!cBH|1OW;mKJ#j?j?SE@D^bY!?uIp-VS-^eP!}1D=`tKz(MVy6k&!c{k`3k zH;UvPFUq^@LV5Cj$%7T}`|Tc*_jBGNSh*L*8j$n*1tB8794Y{Bg_c)vGZWyR%F)2_YD# zMHs2)LA&mzeRo^dN1OSpxnBLBO${6?SU=+-4zNC7K)L}wcoNvsE8BqeF9+8DEhel% zQeiXRvZngZHP3N)xGMd=&BS@feyFQ{O~E}bJSX71#r=16GO<#_y8muJ4@Usjx0}F@ z;Lirw$y)(768EtPj`Z6vZZhNswZ{}ZP?aiL0Ji@L0OLe}8_t&3e;%`ly=fPTy=tqe zqaB$LyNg5Yi=SKVakb#mj9i@;}Dpf6yX-=Z)Y$w3gj%j{C&4A0=s}-TzSjcB}a~!ZB6a zxY6tf=XL`}i(0}!G4@YE5B7YV2X)XxVh-uy72YEH!P^^v<30zD?>+_&%Exo<`S>1t zK7Qa<^6{YdR)OK%zrn;=nQ$hEIF%9sr%hj*c(?|f>JGv=mA43-^VS1r4+qX23r&5= zN=%e#Y8cNW%h?b8A|9wp4J=|mvkU4;62;!HLF{1TMMI0&McYa2{PkuxIkpaBr#QrR zGqIHcp5c(#x+efr4hh=RqfxY{%RVEpe}(o(^Y6+^b(mmZoM|ycTl`3ftF_;&oRc4Z z{O$W?<%qix)&;oYm1;L|MM76e9|FV*{xl882~5o z`}Ihscx4B!-J^3`^@Vdm_1_v{rYh}UXVHH?h+H8Osr*r%{?G6Lj`W|+^v_!){bzv4 zRSqI|{Lj?ClC;#)UxUi~1)iiz9*ewvcS7DGQQkwR%9D4XMcyM>B=5cqQ}L&MguDkG z^41aLy?iV3)?)JdcwV+#b z#ARQ7NaEXSTD@4c*6qZw_bQ2XH7|5PuwpLY`n%2lZsmjbxbw*yygvAkG~a2ey6t$*F%!ypt_o#Cor z!Bv-V)p3*;yUaClS=T^N0vou0wQ;ll71TdZMBu7QsXv$1gPpn66TxH@omjxX2 zMI2*~3pi}?pUQ();7Hs=I9}l`0>|6m1IGdfj_*DIj?yl&lGHcUHXkztPTV>lGo0RV z>trg^$KVaNAH6bjCZ-1!XKBnA`k#JZhR=3i2HUD(pRZzuyYPFHpFP{aPp-(%v&RIF zW8){y;&FOyBz~UaErOpxE5XlB2R}34Cw|`0&wRzXHd@}5Ul8hHn*qOzCEe?Z@+#Zo zF-+uQ9|EQ{a7&9e+5ZdnUg37!LT%5rU%+-F9w*YV=zFy1640>=wN=-C;g?gI8$oeN zDS8ZrbTr{b{wu)zkiEZ;!l}ru#Z<~k$qr3bEQ3hLXQyoPv))VPrZ7hd^KEF!XnG^TypDd1T^{z7q+0w zHfCvvQB`TecP0hjZUF@kNJ5O!>ad{eimfwCAHxDFEFIJ+`pEy{uO2s|6vk8RTO_C z?z=aKA6x$#X6av>eSoHd{B zX2Bq-D5!o)5jU%nhl_)Nq3=PME5AzVFg0<`JpOCEhgKS$OQzo9<%A6ZGtG!+z7-e;M-KHfUzKN}%$p(t;2lGg}uZ1RR%XR6ZP4aqKT&LVarL>@*A;4Inp4N9j$@%@0|T$Sd0WA>Na z4Zt@-bm(0V2%X%9Z!`}IppR~ANFPt~7GZF`zlJ_WIUM>l#et6r-R*8+cDo$;^AS<2 z(*Cba`74wB|BCuiip#U7G#-~jeswj;Kb5x#`R6T#{MQ`%+3~Jb{-gu9U{5EQydI0Z zeb z+V=^B-Kw7kG=Xk8w-DcNd4eOQxIhDoMCi zgrqKSJwaC{Z$*o|?MdEOM0q#t7wp5vZXTGu`#$Q$Xc(K_n_O5~0EyTK5&wYZK+3H7|`4|SVd#@n% zbmc9gTMYgJ>bc)h7ke*_#HKKU)sNKvM=V!cvx5Wni0cv``BA?s(eO{^T5)r|)=1qu@N_tnq1`T2Uoo5SR`0sCt;gZkI4siW5FnnKKyQ6QJ%IDwpqi=)SuYw1t z(j49>>^JuZ@YP)e(shr?SDItKx06N8ZcNN4En@a2F`sdWIW5JsUoEfy5r6AEoF_SV ztFqNJWmDgQ*5{o-cA`rAKQr}RndBcU%C8ibC;!Jh#{tdia-w-EZ;{6TMW8v+A^(o4 z7WpTXFMkH^uh3qU^^;)#campesp9QMrYT10@z{)urtX3RyeIGp5Ca<#h~ zhw7&)c+G{y*mM)it2cYJj|ZNhiyaTv4mDFkuP0``A9v#VSKvlYJVrU7^_YjN!L#h= z#?`U_DgB0k9RJkp2$K%u;J+0PARYpOtK}g+u9nxYGkT;8?ZJUo`ez0A@02&Gl8-+N z{bT7$@+YDan(r>pzDDzO2Wn`^q;F!8zTGEK!*Pf7!;(z<62i5XJy_Udyu|vAp4QXG zl~`Qmciy_^;S$`oDlPiNG_3tAfT?;t!Fl!BC1A3R&EH#`f4{FuBTw@dVOlSI3``OA z?5^qkDZpge-%${!?9jY-u`+=5{(z+eEc-iHy~^0#A{^$ek9XpJDV>CX`>(4p3O@eW zq+suNprDsXLC^g1DA>Vs9H_PTQlg+MZ;{5og`l91gM#%=$Wm14&4ngQ%f1CmDI!bv?JSR_44&(NrB+`NOLy}Y!P3JY zfu%GDOCu%|OZtV6aSG0}K`oTF#f-e2T>xsm@bS&(ECyq}0MvPojg1d$q(qDEguTag z84Y7TGHF=695k#KX}Bk^JR0`$1P3%kFCiKl@)kkEgZ~2!TO2gJFo|fm-*ByS;absW zv?^?i=dYH%hQ5A5D4;mYa2Gd?Z@dszl_vksg#7(7KrR&_x5*VC+v3C9ERfrMNsycK z76JK*1%Q0U0r|CwfNY5mb?mBi;8e10ze>$4#BCJc=-X7`_J-gt-voEm1$PuSIK;W5 z<2*5O?x?NCj`C!rSgQ2D1t!FTZvgS`I|MKIOpXB2<^?Ped5eHJ;6p&X z=MK9UobeWEwLaf7>5e+)j$)P_>yFCRHr;;24_`L~7x*T`xufD}r{5UknmxjMD|`8V zKmw*pt3NbRYF`6oPZ8zF9Rf;QL2)!sb;@=Dt4*Vy@x%*QlRqb{zz4Sj ztnbbP)@cr`>&KHupX3@Xb4RcvGTc!|@zW@FTWuMRgOAi&R%PC+z|wWs^|Ex`n_O3G z_TO8vfwRcTRB7crlb4fUftNKRFE3}8$II6|vjZ<9J|kWR@fN|$8*{#5+ML%xp4$QMghhn+Ro)`- zPMrh1zdG=)8V9@<=cN~JN4S~Jt>+JHf402y2QVt>Ij*=~q8DUSrK599gf$6agF6M^ zHFukUFxdGvf9+%1aGr1Dn_@ZN#yUz`r zd`f)Z_`vLUH9r8~UGB7d(kByx@Li>zlkZ+Vg76*lEW5ig`w`in<_kl zyB!yLaJ^!zJ8JB?Sa;OKuc-J^)>P5CdRcsB&*Wd^jVl5m(vH=OCKDgO`2Qem(vHgFKyQP5Py&UtShVC>&dFL zFnyLw>od2=pVK7AvB`&^o++fM^*4k%`>;ikMAB< z=$eu)t+c7`5d4~^I}d1crX$0ipMXhSC13kJ5|j2n;TP*?(kHZnS;^P(>63h|R<#gU zw=}=6YCMj|D%7&(6#3<}GbBW1ToJNr4irh}D0-D?h!r_CIQC%87hr@AJACC+{4W+> zrX8X=+p2Vrbb*#Uk)2#l0knl-GkDbVEvtXB%^lZ9cB@K{%`zR->z_fZ4eARH>hDcA zcTf=gQ7PDY4g21Lhl1A2U;kk{s#8I#s!9vrGX>nU2m*E&1$-6)rd>>|)H<_d9vzIr zI){E0k*%|~;TbSGYux{+vp&opfkC6&Omx;~>)V~!-e8PMJMfA za~-9dF<2VsdpnnP7%z&aps)WHBTq&)t4iZ$nk;?uDOh?(WU1vwL5((29^yGMNV$Ij zk>cSkf|T|uNJ)2)GW<0nrHv6IA9Y6+Q}#zO^4Fu-pmo?1LnV3*Ru<9$Wr2cd)D8?j z^qQhLzJ84SRF&RVP28(K0qzVDciRmDZrg~~hiAFK{m_Smy9I9%xMOAj_j(8JF|XQ2 zG-ExY8C8_@w;b+4^L1F?k$ie7JGZxNbV@-8%U*Io8* zS~Q9@L+b}xXQrn_Mz~xLr+6Y-8NVxhkD}*Mff`)b+Fte@1!u|KTYr;h)R!^A-tzI`Ahr@sBj|3-!o> z&8?Fs*74z1@{=i$MwKEgnBqPHrimh^oF4^DHZSwA1ykM}!n7HKJkQ(qO$VmQ4osnh z$)2B#`kV!i)_P<;*>EnmaNZ1cN37Pvd3QK}O;*B|>@vC~%z>Y(<&L`G?3O7=uT|;V zbW_i*{s&IhiJbhfHhARt1W(bSYqh?@OaME(4sPIw``I~j#87fJ2pc@8 zKbx=8<3?+)k%ClQl}^56@=|XBc==uA<)bx%tr+L?>)BZIoow_F?q{6#hQ6qq`d^^u zH)YR%(enHcKg9Fh4FvyF|0d7hkavf1D?WDd zY5}%wK$^z$br{5w*<=tO@fKkaE7D*PPdBi;y<;y29+1TQA`VWltl6RQ)mTqz5-D5? zS(kyTX94A%4=&#lK^6W$pfD}0WfdUCzAUF*^hvTheM}QfGvOwASt-)izK;(-U?+7K zYCl$^Q@U|3nEWT|-!R=>)iesC7u;**b|)$(ph{js_!(2L{I>*vVa>Wy-*8`91YVVU!DD$Sj0Qk3@rDC#UycirAc-wrO++hv z1KJsd2>vaJy#<0VP65G790WIefe5B}HDv?hRF_X;(I{S)pi|rM2n$y4G=tR~if^4^ z>nwaVaM)_Rpr3N`@mO94GHbTWP$^KQY8(~HKryqSv5O*4S>Fclt1t6v1I#ezU1DkD z6qBVrZ-b@F4whWcQ(t|$bslB)+K{{xe#PqIUV2cK2TVpXD})U@7^3=I0Ak5mf2)+onZF&H_JijRarz#q!|%4Ca*x z@bgtV@w1S(2P;}R8T@o^WcOvq2aEi~C~29{)of|R8@w_BlBP~4lHTMkf+S@UNcz@6(uP4qQd?|% zz+uUJ$}&z#_2kkjnx0ri6NmF;mMj{<`# zWlu6mxU7PN10o3%zY$2VIrKDMrT__(-yss-;4OlLX%j)hFAfsc4g?ARX}+&@5=D)C zd=C_#m_EYIuxS%bY=I_gi<1y${+D>M zbhtHK34+JDKiP}2iz-PLNbxhEu7^ZOyOz>X#w;3S1sB}%Tcmw492W{^VxPVcz-IB| zLdADW;<%XQ@NLF}IVg#!()hPbzLzTyZm1~S{Y$|&i({K+S>wU53qm}2s)7;3)<@h} z4#AFi@ZFcK1e^ZTddLFZV=SZ?cQFWSCYTUP-UWntB7{+2nQqfJSf6L`_0sQ>q8)n0 zU&4FA<);s?%{#bJW2XT@t9V6sb$8|ma&>gvg1E$U0xx@@uhmGUzIGcI7k%x{@#t#{ zBJE!Jspmi~uC2!yW4~r7XgtysPgAAE<4r;iq=S$xA|d^kpxno5-6;>d>;cJPURi+PmWb?TQ21`o1&(=p}r1 zn`oR;z{(!GuCtKdTEfq5tK&yK2@&vk(RErDxe*`Y{Od2WrK?UtT}PF6k29f%5cI~4 z1=pCm7|`FLX`!@C)Cb-ppQ3ibja%(_bqHFWmQ2tm@)iO8y+lB7+SqQ2Tl$bzjdjdf za@rx^ok<;BK8fa(a?OuQnjXPg&so?OEUV$2PA9vxMfv>j03#k9%<3WLdOq~OTUf6) z6IB^i%1Ja?xH=66Fi>RS?JvqR0GZczz(P_Iv5?4H1PkdturS!c!n)pq0oc~7bqHVp zIjt=Q@PEBtO|L(gmJV!>Em?f?(3PbMCQ z@fN|uTd#wMagJEWV7b9bpUQGa6=(}au%z00f9RT4Y<NxQqL+wSCGRIi(Cj)=OCcPCe+~E}o7e|~ zRnG*%f6e8bPszRSKjY{5fnfBp%4K)d1u^XV2jv!3+WeZyKv@zP=qECe_;Gm*tl&i( zF!1JE#K0)tA{a<|6%6!uFt9R#7>EkC5-?85QE*=m76R_yk5w47blc|%zP#P+@BeN7 zK8*3O_EnRIKc|2PMdV@h!t!|7!izHC;k60G!;8E{@GyQfcu*ZYEbUG_1e?E4f6Y06 zzovy@61OmaZ_F>~T|qR0D2S~}>qeX4&%6!r>qYQmJ`%v&+~04!f&}nyj3@9f^A-Vq z;wXUM=m5X$X@F;ekF~Z*qkvMR)sJPj5nAu(`LQ`)okqW~L_-$+3#MJoctyM9>-e*;CDv?aH#|E`ffVlApZXAaOMK7{(k$t<@>vi&rWQ4Fbb)inDPaCWqOMsT~ z76E9>%K$Xm0qAVJ4UiGb7HSsFo<_rAU-_-5a)^z_s#`GGM&DsY)%mXqeu3emuZ#62YFFQ=UFA^12Yfo_d|Y9vWtXJ^K>CZgGHZBs=w~ z-xo6WVnBTwcmmI_sSre!2Jwdj&iiiy&Iu8YL~tnOVYj&=oNqO_M74EqdR{#&U}N{} zgiZR|SSe#!z-H?tPcSJCykvHgY9vJ)kKohZ`@mSbR;WGsw|Od&xzM?lcKbfm)6Dg0 zcZOq;%R(yV%gNc0%U+Lh#2*xj3-_t4Mo~$F%Cra7eze%zF_41K9zwU=1HON zi?5j%pWOE1ELZ6Z`h6-7(S0fpSngB#y zXM+}oAkA@H`kTBg2YQNMrS7n6sM#Hkzku$baD3*iDiNJ*-64>_9(mS!+`!H7gfl!( z^QWUfO!WcJN)b;O;W2!f&0Xj4S{v|GVtB5-VB(1&JgXddV&ZIgNZIKbxW7aQA}ueY ze+Sl2FG!+FZ}X=E&#JM&QzYVPJ4-NI8y>d>&qJe0KP@bHVxEV74mj|P=@<~tczzfl z4Y3aSZLVQ83U;cr>3P$@&c6Ww*F*rm_sRqCDlhv%A>&37fRVgK3@%fK0Kg3gfE7;$ z0wAZ4j|ip?r#@_WsxdrghM0I76P_k_3$AYQ%<}N;;PpG;Su&FFe8gJ>o)v?E$8)zm zd^;8!7*7T+LJXTMsW1E_AnQ}hbq$scTXm}7&0=P3ss zw;hjBoU^X5&Z}$LWADHty7`Y$7*wUF`NOIIj{%&~BAhUS6RiLD;pIi@{|wHxK_;9C zg7caKPE1T7^`vLuK9#`Q31Dv`p5Ia6Q>C~0)2aWz20R~#c-qb=&)h!cWkTS2Xawv3 z7CbQnp`N)8JY${+j0g8|l#3_8cx*qv(!+p#IneA!2VVuS4I;1siePuPn!r(B2L!M| z!wJ~4yhZe*mj?jYCI_(jkDI`Zp;+JC9QeH27xP&j1g`h`1J?-$t}Tz5xR`fN^ZO)zfrq|2vskM)qDVi9R6p^? znDo0DzJ;hfs?wSMCceg_p|@(yME{pwocT?GuoNHpLx`z<+eg-M8OLuA$coZ38EBh)rLE{pkaGQ629WF^PA@P zAD}R)O1qvj3381BK^;VbQl^(jP&Z!Q1VL#p5kYV97D3R=ejw;E2SJ-VfFL2iXUoCq zExpes7`p@c{*LnM6^Bq@RHbYEOgybd0?+dzo*&*R56@g)rUaffFA|<_c#FWZxi9bx zb>R8ykpOtG6E7$phy9BF^lpacJ`0)`UIChSMKr%pD-X>vUUvkVKZX*T!+jY)Ky$7S z(9Ce4i6k^E17O_~{VzQO_lxMdp-aFmum6jDz8|DhrKh+=7&G1;0gP)zj3FXMTRvaQ zg0TX_c)5>>u^M6g(Sh;NhoLc^&*RP!Gl9>b8%NB1-neh%KjrhHK2;P%RcR2H3|QYE z4y;E-tWsKe`s~8Xs?cZM7f7GLhja`2jO-149(Q0(Xm58%OrN-aBA7mJVxLD)yHur_ zz0KaX?PcJpCRPVKrIv?hKCgfRPnYKj&!fCW;7RBOJk=f5!K8-*|xmz#=dr(vP{` zL7d;bO!FGD+VZ|(ma=y=3TLYHOHU3lc3ovNw;AP$)IOYA>`&Pumc9Q*0ZNtr4{vWC zA4Sppk53?ha5)>vC?aUkRhK&$P%b5bAQM<1K$LJA1Q8V#AyH7|N+PVo0161+_@Ivm z-r^$|)Px`e!V!*y0E+OaI2cq|kVAz1z24P5NAHoKpXc}8KL~qFSJk_#tE;Q4tKYOA zYA8N5b`BEFC_$uuexYM@Qi8~5Jbnd0?!B7;8P1ymAP*0r9u8R$z1oRJr()J|VUwa( zVcbin2dJFzL}W7YTVMEouM-7v{5^!Qtgaj!Vt4Q5_o91;iQT(&Ho7-b{NN@Y+=VpD zMw2x2d5e%{#b8J?BBXoEItF!bejq2_x3+t2Nz(g7IqYmMeJ16^^Yz6^+12Q+DKjNw zbOAgAwhVyun`YtR=rHrX`3f1oLHeG}lwsRo8<41R0OV;Aki1y{BvQP%9goEVkf%ox zAW!lZ0m#BZ0AyYWAYUg10phq{qVa#Lk1vLgKYYj3^x_~}oSVl&oV}trpUtdp_%3s3 z>*pg$ocDN(5T`I5;_M3%=lIRR;*fov+Qcz*s~xZBLbv4GFoD`S1R8S>1gh;3{MR36 z2m%F7jz@UB75#H$1POE?ok0YFejf;dVm!hA>$N0MRX5f5HsxJ$&GUUkcQKgn*3d-^ zbngNmF}~Tjih)TTZjhSFxpnK-qc5Fvre~V=ENK5OH2<{?B+?ayOM!_rZ47YfCgQU7 zDPbT7t;de=@G5ZGKAdnV9%$pTcK~p?Jp`A!9qf*FuE&sA%LT^G;P9D_Hdyvw=M9Aa zz&{!TCUvD1XAGi_&Vr~9h@u{zUY!bD?GW{cVI*qh09({!{UPea5K)^YLR9V_;Z6bD zAzFhDw%>ka-6!yW@Q;=vu&XP#bIu^^;OW%x-yRQ0m+t+hGYezWLJxl1u5)O z9w>%n&6#AEJ0!c&i(dRPM6$cuK{E7%i?i+6ysn8A=`4nzsmh)uSK8{4qq#N7{z#K-ISf z1^Z25#1%_T@{9y0y7GQMTb{!sAx~^e!Tye$R-HUoIOG|B7s)e%w+MM2=?i)4w+yzw zueFIF4+_R#qCBGi^FE@`x^l3uEzad6P6tt(rBfkJB>(3=9?M4eEW4A$na^824epeDOL;jE#G?2I7HmQ|0v#`(vJ_l7gve}*Il9!Kn1SKjGk1MpoY0N5u2 zkd-5JN)Q0=@(4BnxMwf{FqF3l03N&p02~Mb;3W?MaI;X%#w_r2`<*Nm?w}(T_}v&Q z6|Tn90m1%OI6Tg!g`Af-gP66hEWg7BWb04>(x8=K6bEKk2gt`f@(n-+4I)79;4K1> z;k^M!qgKI2@tKP|Oy zXR)lp-45M&q?QGYmz}HZUj>WvvYW~y$pr+ub>;S+HZqfk0GXdeWd3-hI@S4{ zhs%M?880DoEQPfQWTX@z^K%F?iPsY{S6P+?b;HcERG%LCmJ+TnVZ7M$i?C5a_0&%W z#b4Smf%|jzFyYT041t@s7EEchAaM3T$9)jJY<^RZgx`C~HhzUYfL}uEV9R{G1@ME@5%~m)sRGnVzle^*Kx8|1R-^oWeox(I8y0t39bOPtPawF%KOEN#rzW1wV?1|It&O(x|6e z@fI=MwRB9Ijb z=IhF`+iW3A2SCVkqL2d~6uKkGfG^@(0uVA?B_VtB79r%Y?hx{Ph>*T($V{0BMuTcT zw!V{{4s+&$FFS8(qZl#|t#42D6H;(C8q?GIFk$8x?S06dcW5FVX)i@+nT8}LYK6Kr;-H77jouq!CA6LXHr3Fh37yXVsl zbvT>)w>W0C>_07t_|!l62P(TaDP^>?%%C{m3-&$aIN>4e3FykB-E36e^a7P}A}XHy zt3%~QzOw*STHQgYT+3SoDoI^|%J>je#x^5VTJiBNdn&XF$EJ<6UjZSM`JBOGU}sO{h-tHGB&Jk|*{i$#38-Lh>$MAo;Qo$?w0qy75u9 z;}ES0oa5v1vknNH2kJt{huHt-CPZldZahOEr;CliJAHw`CJ}))_W=QO(VX2^&HWlD zN2Kgz)%Q_yEl0}nGCEPhVlu`zC)k`b);8RZgCR#xUyrI@&ikP9_yz*7{IM5dxvw+h z4OsqqE3hmL!LoVNuvxnHi|}ynw*~n(ZqU`0hd3=vT(74Ahd)Ie+~b{^kbSemzqyec zabwnBOz6>0p()5-Cq&-&_{IR_J=K%sJ$kDx?}b|+@5K;#+g=6TVKICP0n>bEcC)jd z;8+mQl_k7U2v(v(uSUPQil9AvAZe*`Kl5)4}Fl#O4icgH7JkO^8h@e_&=3 z;my%)h2rs-Abl0=Rp|XbZ()l;R|;>jmG)F0$TU!t>G5%bOhMDy7`{;f=%=L+^bhkE zp=xtF0s289GJSF-4O@HtO85J$`;+y#bNyO!$}wCcyPEWZe!85cK7wYht=MVMm2I7D zk)ufDnWD&fW1S+)d9$e~E2}D={W$l)+4bAKlM0h|QQ;5fali05#?V=$cwNU;S=F9r zqq)TBSLZ+=zc8mMie-;!PwEo z+HUkomeF?w3MM|yD&i1j*|S|cYupok*knc9t5q7;tpG05-C0^Ob11cubnkh(fKbr< z=(L2Po4L!dhoLK3Nw%^rNd+orL{zRE<5afb@imC=gaDPRZYNYO<1J!*U3W83ITwP; z;CNwt@%jqQ_Jy7=pK!u4zMRt`Sw!3R;|2KwpMGF2X4;_odFD=}g|mn3;;03XW3&-zp3VP}okzoaJRp{GyE z!;j;$6!&xwvg>kpz9Y-%EK%1T;=#QdB#2?{i=$< z(KQk=x5Vv22mHF4vDK&}V`~>@s|;-IG+zBo0<(qu(?Wb&WW;{M84H-qo-=;@3XGj* z0uZw&jE~k*<8c}8&g>$HM0w}|uO71;+E)|L`xwtJH>n7u${xlpzq_y8c>3#*0F+De z>UnND)uk_?s>kRGyq8_73%!AB;$>HI0zOCOG})yl;`1{0c``mfB;oo5mzwUEGu~*1xi69rd~FVLE{8B=Zhk2w1g@v@#?8H)~wXC#^>1wbpxCgm5_& zX7&aQ180yh#6J?_UGHNHL{|p1x7B}6GSvTJQT<~^2^Jw}wR|7nNP+s-?MmwZS36t% zUG1R$lS0%#*=5>Ec8#dHS{6<-^eYt4Gie)CUuFVM+!4+#CmC|fsgH3)~>_F~^dS28(|m>uT#fYk4ZQp+Rl;#$F0a53LIfy|A&kj$|TnVYqR%&S6V z_R3@h)7k1!+hIJo4*f@lC6$+##vx<(fSHm!bQiYBm!ss6P=&=W53jJ6mkEYvFe-M< zXUdwi)o4;K(N!k^C`}vTv9CKx(|!mFu!rb})5qL_?GRl_Y-?-BxZ8o#E)l1nhgYW^ zKE9~}q>kQ7NF8irYlpuzklGW1)OD8yX@_~*{QgmF%5dIC)TxR^N3E0rbC)KLgee&D1v-xV?yP-^Ou_B6a1l| z`U$?m*gY}ipIdq`~^bN&xn|JhN?f#6tICbhEl_l<6ldx$9a zO_|l{Z#{?HEjy9i*YFnM@7&xHa^D#u_dN|vxw&;S_4nK_ECS%v-yEZ+{{4IL>W8oq zqbrZKv?YJHDL$LOgC1|+ktBEX79n|O4D)i=cf^9`61KlC z1)nhW2(cTaE1hq$@tN2e_?!^&`8}gLe6HeqO2Fqt2g2vbjjToB^XCn~=VS;ztzrou zGrSyBk8t9728lC#*7>JPhXnIMlcDU+v_;#@)xyU6E#CpxEOXx>D3mk|n?Jg89hU)C z^sZZhNJFpliG%mag-(iQ$Tx;XikNI0#0vKPffuj%;d($F*vs$9l<(G#Z zAP3oU{h0?nyixcI*FH%izc$Z}o2lW>X3<}hTl*%qX%kCAp{9yJ5T*ziSCFmcQ za}^uZ38%0NqbsktZPnb_37v4K*a;bf1=S34SU=!D@tcZG$qiA@ z+zQ`N`R>B6apU-QtjbH6BW;}+!+3s|Wa=|#4&J{E1|D9^CBc>=^8T=kLfOO@y z>ur1=?FfA5i};>OuMXewd>aY)o^DI{R$XVSd7uUGT@ZqA`)CtiT;G;FsyJL+3pf#c zMdQN2XFW)@h7obeG}H(2Lv}yKS)cz?lBVH>sg@(uHMxFhx64Y$DT~6pbQ* z6A_uRG}a7C5gygVJEvpoNLRi~uyKgH894kd;;>|Z1Bal|+nH}a0f*(S2?w3G2OM6% z7C4*;!C_~Vje}Xv*oNTx`_b3zK9I9U%nJ@B;nk}Nk=_{pJB**!n}{^vI^rC1CKy|{ zZk01)rad@I67{2@Sm?@2y+x_xH z-yGF1yL!dSLpP6?+Z8?0HK#M)yXZ~Z9Q?Rflksx9^-m<^T!S|W^iAWOIK1)Dn>un{ z6H3Ee$l#buaA@%*va4sJ>>8ddyY5MsJtgC1r9^g>$(|y=Jgk??FAw|0FJ~HlIqrc( zzdUS6tY041uZe0t&s%F);+HeG$e!KfWo5Ttj!Wwt`U}~!UiOsw^a}lH7hd zbB|xn9O7Zm#SO~DfMhAROy&IY@Ip)Z%zR5ezw-XI*Gn_8OQtK5W3w!~9Xj_7v2)M# zrNM~~kRIzHUz;qAm#@v^+Lh~6Q)urC2f}J-K*JAnwyU8}+(%C^MdxZy`c9u1)3#uw zYMp5qLOHQIcdx7s@FmjIS?~b|q~# zUj8O5*xF)Px}?pUa;Lf^b~TEx0G^lXE0_lcYZ+F<2d%&6%y&nN^_?xWi1Mnt;O*{q(vkcud90lYvB|c zeW(_HCB;B{)RLs6T`6nGThvN0)utOaZmtLzDbaxdd{kd;Revznugb0P#I#tyoY_34 z%}j~hRj(eiuhSxld{|rn`Esp_fN|4r<>(C(R$IpYlo)Ym04J3dH+o~=Id`+EI%=S3 zR`*yb=Zxypa4uEV=F*=)p~@~(RJFNGF>>jTwh;PZ1g@$Ge8H57tL0p#FuCL#yXHbu znWsRJ;a%@kBsp&>X+^d>GwHP2<#RkU{T2*Jdps_~ z2ua$kYVm$!22JE_UcjBztjh>oOq0NPA(0MW+X^E=MWg3!;KiXXAi7yxbYIEn) z|M9O`l$|M!U3fD4dQ~HYL)_kaBdj6EW+hUulU+^q$}i0Jcy-z@RCQ$vZL(ca%bHy# zx;;!^9=!uD=tQ{9)7=x+ta|^wRjMy{Iq^h}33)mxql=AOkD+HPjh8k^k``;Ir^*9f zJ?0(SHc&3-dsi5IeXqwzJHH~$ru|XM7qI7U+qPHH#*X54Y;-O6fN*CUS}aPg?(MMcNsGc*=gs9|O-wcR zd>K6v$)3MMH=Tsq^A2v(6Q@1D#$6G}B{ME@qn_QwVa^*G-`!{FmT6))ku}512vC1D zP&bj5WDFjX!L5MthlJhiQo7UdXp;?g5`*OrC0qWGu$Ay0w)u2rTcYjHrrZQr9}r>P z&2>+RZ?=wIaP1_l-n_LF9I{Va@5=gN?F^Y zw!<7J7(XZPg+c8;f3`&H>>b7pvv9@y>1??4BcR%i;a36?ZHGf?ew%^YG)B18!1kPS zRaahx^J871GtsTm!kd-e+%*#hj`}0Zq3hd6n#ZKU)e| zz81;6KX8Ue_IwYBRbBanxMp2JC_7;{y3gciRq6C zRrDy$PisWBPTfxSjM<0#;FRb}8J^Wj!`p|(=<2XTOn7;<^{TE^T*#G<9)3!awk8j` zYiP>QHJH_nL!VQ;){KCf;ZIeIsgq&FZ{a;zrut>~aSB3W57;~QPv^xm-I$>94ngO& zfMJP^wsad>(SQUkH5y;I$b)q<`J}2g7r;Bc8yx$3&y7U}3s5BthE*}hjg3YsrEj&H zob9=N2(OZsaP{Y*R)JY;tkPK3451jhlZxF!jKEc?x+&G2EX7Kaadi`1I#cS^jvI^a zLHpYb&o|!&`sbgP^ET3YJ;R-hC)G4dQM&5x@tUVRZQtN%z0X`LEK?Q{BlF z>1~*gAF69sy~|$enZxSNU)0?7(QvKzGr#)%1lzB!2i4WR?sRgljh@VXCT-OF!~z0% zH)pPzi5T-%$4=q#t7wVyg1I@Bveq3fNt;sL32m^fX?eUH!R{@zd%bsUBg{ZCI4Gbm zU{%N}jXK5OLE)CQUc`2n3>T$Y%y%E6?mkGwz3>8=wV@%4;I^0S<#cxf@SF7{Q%P0T z{!sG|%(zv)7P^1isD&&$X@@ZyzsTL_RddgKXUG^AEyzF_z3Gc8ubO{g=2lf#PE1}% z6G_`AvE{zq$hn$z%|lo7a%o!e_7{EKqI+&eho)pz|qr<5FqI z2>A!|(L30z)Rk6_-L6-!fu_$CHN8c*$n#MS+W7nP(KSz8(tPBcg@WS!Z5Z zHwW`?ip-DeN@kK4O&SXdXz?YOOJ=X1K=C3oE^>6(D)N-sE24cag?8%7DaUTl1S0&6 zNVuv?DB*@Bs^*KWjVW+*c75hlo@Cp>bZK^Qf0{F}GxuTyqo3`dZ#0A8Ka2DqB>G%p zE`P%kZT3{GCxWT*`7<27^H2|6iFVMNO7!Z)2=?%NXUH2$FA?JY4SFjXy(N723$t=8 z(YsNkrx87|V+mga0^0a4rcLJ%4lIAu_TPp3$J#J98addQeKlYnD6$bvY>>(S0*gE? z*4JRIlpsmQ7oT9LvtY#%Ns>0gsL&5pEj?Dv-<91&i#0kPDG!)Nz7)w^#gz8Seuw3D zc7Lo1Vi#FcL8;+#p=GlvmlkXM_ES(RzsfX|jK4V3@mwW7WJ_QkrZGBwR~}IHfe1Er zrJ>|S47d_^9LL+`x#|D9BAJ_ODQoYFfi$JC&9w5>e_<=%-e^xNHQxWeJYcBD%|+-f z1&*ObuaNQ8lV5&O3PsbEC60}z*rotJR|H^4WA-F>eU=?$J=*XsQQ{DJleoMM7~wbgHW>812@&2b5`L*u zID6ukU9)ip*e?%@NqKOVJ<=l5`xF|jD;*v5-fjXxkBanK6TQ&!{CDlg5Jqo4*IUM9F0CXk_3DNsrr1w&XP&}hcRBcvS zSb`DzZv>;)(LwL+c;Fcj>9r<$p?IDOOD;0K^B8!#vZ1*xUuU9sU0refCx*(`u;ird zn%%LsB+0`IVd6%QH%(kb`Cel5G92_u8biL`BE5b@FH}CPy2A9I8vA1bElk7AfRrjX4m98(Cke2GUCDGXvGsDu{)))NKw^UL zkkS@H(gExgs@iOcywk$$PJY>iHB_VB-dXso6ng=EVXT}{G+u7MesVm1pazOnJ=y$h z$}!b%4Kd;{F zue2hgR$8ENfF4h4P;vjFmYQ3XpysYmP<<(fRIR6>`ce#4>v>%Dr5snao@Z5G%GtC) zNzNW`x7|-&skYvk)_T9HMb}qzi(>Je8Ys>AUEKt)O-j>>81fqKF~^lI#VnyG+3|_f zp@^t|V_`USWlvLE5!5*J!7i~6O527i0(O~QvloTaz=-r3FnZ%0^eSDTcT%J`g6M_n z`}Az=6 zCHrsETgm8UIOvr$f_w)=di^5MqvZ2oG^>%XAEWo<6}EhtMDM&v??B7&@->MLJKsdq z&y!aZp4kq1MnlNgte!Cb9wd6=cpyg+HToR>?3D9}s)a}#k^V|X|CD0OJAvqr66sfY zBI&CuoWv374Po^19Q4jMfV|U1dQV2AhrsQn%eM-KR9E61^yU%0+eLZ}BGNtfv3q660CE@yU}FwWe*58>PTnl6vFn?AaWxE}m~)%07qU8_22F_w*w z`Exc)kI=1LkXFuHOim?F7g@}b;u@|u;|Am9b}>7zoGCp~D?1i@0w~$7YSHVxdhZo1 z$s6vG>`Km}{Y=@VPLf-C-RZJx7D_ka!z|e~k9Njddfk&`*DN~G(X#g}zwDZaqmX_% zuKyy#JAA)|p~M(|XObo8S9I+bb&o1`k5`ZB)ClSlzZ0F}mt8Nyg`}+ozdWqDcla!p z&|~aBh)@>mrB`esSCx`s7`1gSXN#cn$tJ1}|>WGzV`i`LP(h3-7WAZ!gBS1OF&}Z=iS5 zX?9`(pg0qfdu!XhS~QJaLbrF9kFdh_>M^4WXGtmY(jue90UPh1wh<@`?A~2DANMyL zB3ss7^V&rrp$*%>h1l+Exz7C&rj=*?h)Fy3!Y{izoxhFNwYOE> zHjC$1Y4JPLw9~5g3|jNct|&QU<9NCKCV39bnAf+?UFMRc{@O*XLy^P~hjmc=EZXc$ zG=4b?GERrttH(@>#c*s`Lb997YuK@#va4BVHYQu_=kn`bccQT}q#0Tr2R8Djy?XaQ zuwq3E(Va~eb0-FnsFdnX^lFSxRVz!=wi-*eVopWFe_kvPU>6aXU{?_ssk+kbA!{IY z)&Mn|lzDH48ko20iUtO&RfmDe*k^ZU6VTR`6B8{86?9uyL@VH7g9l4eqxHXn2hTf5 zYvs1<%Tj9k-*(eaR^N0>)-+b1M%nAZO%HH1eGhATgxz$4-E>3)gH@(zU|x)}4b0>^ zP6LxzX$x{{3kecqQ~QK&{347(=faj~$T1hf7!dlH3zLVKbK&;AHihRHg-;)}dLiAW z5Zb?+Vnhm9T{`+V+tG4o*7Bov%ctowF5>-mamaz`q|NHs=dgY>2B3zC;A3q)Z*zQT zGhx!jZueEYUDN1#nH})zG0M7G(g3ZQ)5d&?Rbz_0bYpLAyHQkOH=WO#{>}EWdd-8< zGY^z0y=hJ=1X_Ee?Oo7|vcRny_>Bk*5)DV?^% zlHl$Ub`e=xkNv%Ts;e%eRl@$d_7Y~m#TiJ+6PGYMn}*G&`lXSbN)Vb)b!=Gm`BY)n zSNl}`wrv+?NZD=pR@>X4petQW22<7^wK<#aPB3n5x;Kzpfb8WcRgdWqMHwnL&PMhc zGBmw%Djo9UrOVSY9qTKL{v<~Znwb+wrMrdg#xI6`tz zt(<$i5NkQ3DCG|`J0%BFxe?DnL7Z{O?+lB>9L*YCW0SvdAMBkbBac>C8`U>DU;us=5_ zrhY}|wB-8L!pffRgU6jIutujLl2p}0_I$r4gY+fa(wCK>NMk9Rr&>dGnB73sfoY9# zYB1B08q&pCe}t1YI8nSClQcET?u9jHAZffPX}9>j0VbHK8&qA*N?0Fp^o5I#s>8Bp zKT6P{n~u)97zq3W`}8{IAzgV_vN^kkI2$MG$LozF*(axx1Sf)r*r(y={)hHSi6!2D z3oK-3&v19dX`nhqMD?f3P5p_f**+PV4Xd+Hd($J^ry-}nBje~7&0yG;G6lk*6-PxsOMhb?H$afX66*LCF-ya7I? zGylYz(mUgnm6k^i3(iwAYe0J9JR352fFvEA!)8}j;Entmw7({WlyHotgrj2?Nzg#f zh)EcyogIfZl93Y42{VI;c(m;Ko?I(%<(N`UuuJIV^NMEQOP!D>MGIx$qwc7rMwrP9t+X#DNa6TqdZ`9Dlxo%E7Zg*~!Jr%0147Q!3GUSw`L$z`CC;9H9SMQNP7O{oP-I!X1|h2Ci*=vw!Oa_wQsh!3I%C|K6gq{=JL(_c5z~Z?T_o z^l!b0{rg*=zumvrGs#Atws9>x2FWr-$%fRsr2eJ;tWKYH!}ZgZV}IE6vWVVvk=_rn zjGm(tX)ug9n etN+63P^dl3VbmXXQ2%cgq+Kaezc<$G$NFLH;aof}*u$JVOnca$ zy6_>Z3xB|z7{MOaw>r}3c*pJ1k4*K(s0`D6{`VB03Rb9CQ4>=Vn82h%pg9bF|yLdmkiH7sM zZKI=(_~luspsq~wb7)f5_Op4y1?i8+(0N;Ruyx+{vs5Je1f92Cga(B3wljK(=WW|n z&4_s3_MTLTa*6!+Hyr${jQ_PKEdC!A`Tsnc_@6q+;{OjY7R-Mc8W8yZs;9{R!@or4 z|6jepe?0t0dP`f8v=Wfd`S@8`9o59Ie9 z?Er!i=?!7@-Z*aSdlRDfu}JTw+SSne;2HcUP+=pgJIX%t#3ao@p z9`{&rt1)VSKCN?S;qV8K*m{x&s&>{udu|UYkJ}^Z7wSH zAP0KKPcu+-SswZ$w)hsKoDcr9k_xj7EyVu|QDP?AFJ~618mrqf^Z-7m(lhuR5%~-X zh>mkp*c~NkUi}ff$E*Y*-^PoBa$UBLwyco}g=*teIEXT$@>9SV)x?(xvU5g@uvDnG?oPz*sS`f5mi@?G$TDSW+a<8#iBlA0^2Ft_XH~+ z4RuP>Ml?y&rX*N}qpkVdv|>T$HCMy$)RixPwbi`Cj~G^QF2Ss?mdLEXau#Q8H^H*| zdq|QRU<1uMtQk4~|4BwD!$GLz2N3Eg66(hYty7r9^Bq(|vp=o%+U#Qpr}H&6)p*EC zrG%(d*|Q~8_7n$+eF2W9u53JJi`|vDxliQg%K(n%v6?3Nh1p(H?fGHpE#JBE? zCJAj@k^Hi29bebSO((t0c6(TP{e)DxCDQXUZ+G;}4x{Bxs-A?pEVzL{8FXTX#=Dij0M|qv+jwzbdyWOp!fU978pY9DI`^XZqJArCS>o!?e#eKtHgQ~ z9pJj_%8S3)x^mfJXf8@zQ9UfELxS<_g$f+)Vt2~g^(boLaiM-6O$~3*d4ef2>r58LH9yHB- z_aP;5B!db z_!XQ7eypS;GPikM0gWJ~{|KE{hYi zE9ra%*8i%mw7?U5q3Z|(+|$+apTfm*o%${A#~y}Dtt(&rY$MT*IJiyZ;Nw5JezWXR zq5jQhXoD*`>38t9M}+z}U6}Squ75-LglHXOSwmOfE^4TdHeP<(BDht6I$UvgOU;8WBD< z1x-T-;qmKA4+qnqeha3b5t+W_9P)COP*4?_BR7taq}&43f0Ja-dweT-HBTW}$2urg zb}eD|nWV~bOURPa?Ij2W(|soFK8}g*M5_c?lyj4qHAm-HDd%l=5jk;#I!aQ0 zVa~(B$6jGwO69nB@gq6zld1IQi+NEX8#iY;`}@q>NTf-X??qxxa%=eFS&nJpJp9K5jjNY=RS6Oe_)330%>>2Wr~{!T2?;;d?F zzu=Ej6)Rj98fajh$Tp|sAaR;AajtQQ^V~j&bNS_hbyOVUTocT6!;&s*afCq5dxv)K zf`#?bx4D7ZIS;X1&!G*zNBv&RnO>Ib+gFQTPf;eabLjuf*FNxn<~dWL%XCfqnMO&2gI)nC1dE#q8VL=OB;0Mua?Y=cE;BZGrD}@ z-!`Mxt49CkQ!KG`W#spEmz0&GOWqW_WQgA~NU~?6JajXTYHt5=hJ=d9C*|QKIoAba z!;W<#kBur#*UIi7{sQh2470A>acm(Sw1DsJ!vk2rcId#I4;J?3V~Xq(?x&;R%ry_1 z!I_M@mih_785mzxZ+l_S3@O_~bBI@uxrxa<;UETE>&BL)LM-sX6SmW=>Ye6o4~@+j zRSYZm&Ux$ce{59o*i2(;v~6QYZ07AZ$^)}{T%X-r)nhhPfo6xs5YeiZ-q~)!tH=1z zysm8dZlS#_z4r}TmaalVy*@CC2W7rtL7672tf&WzcFb*8i4!t8vZ}|7C4#p$mZU1( ztH+F^##!XVtLtVr(8UaRX@Y~ujGkZ*^N)it~pj&fw(#N%8s)rF0`$c z8dKX_mc)*N?7p8F$ytbs%-(?R!@X*u_EDTKw_^RID_?$Vt7nJZP|thpZo}ek_3xH? z{-5T{W0T3$_pf7_`gd{Dlyiy~UZMPp39HQ*{}&F}{6D%2{A(irr+%~fZzT>B8Y6Z+ z7xGy?`?7i)Pe-Rd+CVlQ>qH(CI@s3g8Hdl}eAOh+L@W|@rL9Ar*LOmm|A_LqYm~>V z4@2_&w61!2=t$S0Vv=WHv?b4FHOiAbWDOz^#;NgEtwV}Fwp_=egIY|}+Lq-&t!Xpw z1Dj_joSqx4zjP&Ozul8>l|k~|qM>Z{D=lEWdQ3tYKjUJCD5vv;7-Rff!2{0ez0(AJ za=lrbQkzeV!J%F-9wu?MbtMc1IA?Ewgxo;ZXzz=$jMSBh`)n}|?SL5Hiyb)jn5~fQ zLlx32NP}pSoDuU=y;;(DxqVD|y;;)ah-QB1&$gNWn9A8`rAFV@Va&Ys3e`u^J~U(E zyi#e46G!4Sh_}o-?8A~OTb!`|G*0J5^r!J99pf{$K1}xEp<0%Gc&63gvkxNw*;rcY z%6EHh{s(PGcO;4Y@A;(${&55_BLDc3&I%e08UNozS^RHl`Shi)02c{xUNlRK4NCyqf4l4e`EMmTI2Z1~9aD}~La1F)b*@|K zfBBd`DaZNX8=xN^yD8F`4(Sh3otgs^UD-}MUbNX2)3X%aajhZ@=Wl+tqzONqaab}t zQIv}AnrT>)5Ae7Cuu$^RuT-rxMP6EHtiLf>cksIO_0L}=lA5$Z_2pF)Px|e@B;N14 z?amsz1>&t1we84}p!JXX|6u)7O*{!nnnu)h)yI?YBRTF9IxZXc1y0IhA%s)1SP0>S zEG>j^JXY0}^M@Bo#(*2dh0ucQ=)04AJFPvwb}WPz-u<^1LeMwdXU%TtqELG1rPX^6 zQ@3R9vb$w#3A!aq)VhH`1;^@>0_2_LpVszzH6M;~sB-G>soJJAt*C$gW;t&@#7>c2 zQP>atx)!Sm^+U1LIbq%vu{aEKz+_aSA1m^Pa$Y!LR5_4!wU= zidJEqAMFTMgnP_vl5cr5gzX1#bhRI=c1)MJ^yEPTtg>nq(GJDuWvqj+Lvg+k9W-BI zn;o=6L6^96TShCTK{za}ZBlbDM9cH!$)$$fp(U9o86y3n7bX(?xU8-0DLm&b~~7^ug~VR%Upf5mu-ipa`9 zJ^r#Vt%R2-*3nE_Zc##7pj6J^e=!j7YQR+k!ri`ks$VDzmbBdqBLLP{i{5An8@)a) zQ0VRU&GgSAHl_Ny8>oqLkj?zjEs*f?Yfe4>S=Ak&lZFA(372=F*z~Ll9MLT`Didg& z#9zeOzb(jkp=$JH#@ASz1~#ePE=(^~btP*PeP_I#z*kLPE!#Z-Yr(0MmO6S=an1Ad zr{9rn`D>ePTPAIQ>TVWo%gICbj26M)#*uOEZ|7XZ6=3aS?!7p(8h?A>cMgA>%A;we z#{O#~&CN95h1^#r`m4>DIBgx`yj~1({GvE+hd5#VZ5&pQ=quq%I@NBB9812^cV`!% zn-ITldTqFQ+I-c-e>MUMy7JIgyE_iA2me=JAvhT0zPGz0EdMwWACZ52Nk`|6mr+w* zS324J55MN`@h{d_-in2{uDoAr^WTE_S4IBcI0!Qwe5ae*DtzZR4wL|-*WH5#TQ>GbmV^}Vr{J}^-Pgd z)*i9lJH#04eka5j-Cu;p7?1G(yfxqhVc{NKI7nCMfkKY7uT!3Jxw7JRcNXY}J$n7p;UfPU%ltLOCe4WRz+V zrQe;DmMz2_T{X$8$LzsV!STpGjHY8j;)qA`{tg$9#8-}ZWFchNN)4l_74@>?k-g|p z?aRUO$Qt$eQzliL5?h~FdDg-Sd8Mt!A5-~4 zt<jTsubS*(JQHWsCR?1HUqYM>qBt4*ZE?cdL)53p?ilRd@%>1AnY7thIEswn z+b1n!-v6o~+Y-XBxITOeU8*Y|Y_!?Ej@bQOWcST|HL#097uBr~+w8^qkcues_2Ivo z1hGo55PpN^%fCp!l?&h43_rRK_+E9TFyEZ2tbt(^LW?-x;7h8QX0#be5WfPlY`*;E z%5Z#}ubTKD$N0a^!T-kv;J>%Xf5)2mN4>^~{Nu~D@mOR|#ASB65@Yk<>TmKdD$G{I zMRet<4L1HKz5xG^iu`Bqweb%he>dwtQoOp;zpIZ|Q-Qg}_bFaIrre5GkG>+fFKVUkmp5Fp2oI3*#m;jB<-}#!Fhfz&r&~=C*MC)ntZM7sqo8jpHP8JUFiaf z=8~mh5ce3*l>LN_XH|>o{)^?eI5Kd92FZO)hRh;c$F_bB8Jac`jMTtA7@QgIM7V`L zZ?R%hIjw`1Y3w%*OVrs#DCT2qlo2|T^PdUH?_d{vncL`dsPvD=>rR&Ao}tn|o>X_b z95;tb|9HIaEIIBOD*fY0bx)Gx<{-0(4$x8}svP$W>i@t$-nCFNj$e-d6T78G5-Z!a zygu^@_TW2hKFiri+G=#<$AYN>_v{TokJ32I`k#|f{}WeH8Si>cpYV{uvCYqN*8ddl zL+Or~lCE6%+J^Sg{{Y%iBDAM=!Cz;WlxhoEHfX~l678)|I3aRYz&W<2~he{)09F0WRo_pM`$r`VDp zmKML$H-|30(UoPqmG1{L7N`}IAG4Lqjf4oTP$^TOo+aPb;xY%VNY_NO4;7MobXy zFn%6`!4?Vv-FcxaD|jne&Q^ZlZ_HNu7_UcYg>JIYl?Qk$P5FZZA1|3J;mR&6>$ou>az=Jdth=4()N>F?CS@jy5)~JmC+pyuH+52 z@2#i0>$CnGI2J~VZioA5a?^(K2LRZ$XCe7>qP*DpK(jdyBfugsY)d>#ji1D^$&-O>YGDxd_BXRp0Wl(0WDlX>A|pVysi+)5hETFCyK6dbFQK$N422sh1mR zzEqbX{w(Mx$MKWn5r5K8Z|G0cQZGNN`cmW0R{OL5`rrio^pNU{j!O${mh(qq%c9%& zPu-k$=3vmHzz1p0#A;vS+*^58^?CQ7P3!jk^qoOJr{5BuUZ1-Xw!aB8p7-~2Sm0y) z4Y$Bg&5vY(DZH#J-FYK!{v280xA+^=c6y9^u}n3GB_E`40O(c?U8%!cIoQ`>*v164 z($cs#LMwDvhOU%d$pl)?Te$^x=xW|dOEN*Jde8dC+0m965~nxcvvdiDuDr@y8o*oX zgO+ykH(i-AyGIL##xIXNZqM7DUN4||d!sxYQx*$D>dFw_^vN^_>W}fJIqG#onnv$o z-lHIpuH48Q`M}vo2eT2cR!AP>@!{b?r>iM+C5kt4KW~KQfn)qlTN|zyMpk(MrI>qPS36sK)ohJh887pA`K&TPi!QPpsM&?Ia%grn%_`fzfZM*^*rqa+ zdZGi;(VD)n2|RnP%qV(=I)L8hmITJj*WwU&pm0|AC@JTR>YGbPfC7c8Z!Vn)(zY89 zcSjLZHl3I^ikdfvqM|PxVt(HjFZ`?N@b$4`sFgyAj93$(0H|@@LvVuVO29r8p0ch4 zOnt*Xg-HL`m0v&Q>w%QD5{1C*D*>N)0%DXJH={kQw;w4F7@cOBR{~z&PdM>H>uobR z9|uKhzQ4I8xYLyfOcqo<=HNS6lAO9qSnZA381}r}p9lrsDxJ%+8O!`0fu ztH$`i^=MvKwtiwSn39RRnId<^-TgPQqwu#xH&A#`3sQFV@?igij)3Z3cLJ3(!C4q|N-tbynBks4 z<2BRppV=3%f2yBb1kFH`w*bv8414xOO*F*c`MNU=#s)6TLR z$LGH}LrT;3soDwSezce$$Zn7N@6P+{lRqS*PN%8Kk{IpauhISWJLvxUgKyCS2V3rm zxKOM!`sVJVS4LS{j+B0v*O%&U;`Mpm2}6di!FhcnrkmMS-S%2tMcK02KCiakt8)QS z+~A9VEJ;SM{*tsY&)oxO_SCUw^9!d9RJA2;oWL@-)byAqUWFykK*B!mrPpKbq^-GB zH+I&B;s3gF`3KmXYZT=;RQ^_Wd7!GRs%c0tR%`E2bI%QU?21{_yZ5M1i3w-^%@PfI zP(FRCJ6YA0ewZ}0QlmBM@ohq=ir7!uYWTX+!~;3+w)E6|1>>RSTGj~3%+|4^V=L*{ z(Vg!T&!gW5&p4vuI4?a0cZBB_U_Pbt6UlP^JhM#QS}8e7GURR*=22T5HyE0-_6u^j zooPHL-(v<28=2i+p){W3{38I^5g!3S95JQ@o+qZ12XadSsy3aDsHKl6RyWZhUXWBb z(Lr9kRE?eK)ij#TVx6TDMacrU4N}%3Rqbeh+yLM!U@ieG zm*B%?c3pDOTT_rjNR9(Lk-afGDnSj~VPExfB|L?zyPPuHv%KnjRIX zpVL6yL~`Q=#k9JKR1o%nOhGcnR=P3q@xuW%ce*>>rD|v8{HLQNiO%I4pLT{b%C33d zhYKinrL4h$eK>Z@Zm$R!pG>i^W3NMd8!h{iN;)KNo5`wx zpr8RO1QIi~JYb%jZ?Ebx7gmtEKlUZ5`y=lHk6ukJb)W9`up{#ieOVDmf;x~F$+f~) zfWFfQ#;U#o8o|B-6l+j@1ytO?SHLQT6tGGm1vE~51ylyXSAfv1vGGETa0TV7amH9!$ZiR;K#snr5TqtMb66TsWHS*SVM;jLSc+2qf+D=$-ru>rBdBDmEtHgLCrJ-JNl#$U0bJTwlHX1=61W?=Xde z_8guIw7N6}huE-TzABXi*!~FfQJ+RzTB-5dxblGE%efd>dvzcXFdk2qq^(9h`m)k^ zs4K4dHkv+wG=rF`0_ut%-?lZk*$eQyZsUYN`U-G^@HN+3x-)wiCmP3zP6N?+5CuF& zEh4&P3^=MZ&UPW9Z{ANtA7exxaS(lLIfxE%5Pf}l7@|Ku%p`o7+ATGrLG-n3lc?T< z&q$&BsoFW~&g#01{PDM#%<#O&y$bR(ZB@i!g`dB`*x;K1%b+#ThxqlzWw)YZD^*=h zGzOPZ{GY9UN{!-0V6Zs&q>|uoJCCzySW)T9I0rA4uYi{~L|#S^FRbE2eqqiaYcixH z&E9B*7h4&%j8x}x-Xi+1UESGI%G$R~)v>CqJpT|9K%j^timm%D8WtH}^$oAM%q$03 zMo382sKPyzPhd#r0s*#KqlU>IMU?-gwM_nh+kH{_GUWd@NdC1I0X1M&ykHwK>`t7( z`jj=ud^IL?b&l?wOcNr`uih)xgsAKDWQMKgME`&sme%7DsGk;%h zzQ<`#hx^CyP0U>jB^C6m-x|U<1AoYD=rL1Y0=|<)FXQ~@&~+-=WW07a3|+iSlHl$d ziSJbee9UNC6+38tLH##6q@HXMKBww!o4n*m!fL?i@A=%q^?92xlCb7{UJ+PJab(ZU z_Egk?Peo*qwGy}j=|iU=vEqDmPFJ;w?ku)+^wG2xG?&~s(u#d7Mx%D@LtSjgKIs3tl0v^ob$e3QzDP=A z$3AA<&#de%XiqCOUL9Q?FuFWqTG^YZgo^M=9+Hxga%Tz_ADLe5Pp@{Eg|oFC#-oY2 zKG~oN_YBq`zW3P5$hX=JM^^Q%qwU|MUy%u)PE|Jg=Lh5kFR)GJPA-~#j(b}lQuRg! z%V!`TJWcD~G52fIcHEEBC)TUStoV#@ydQr^)v*#GM>>U+&bab3Q`Np~Z>w6RsA|UR zohkyxx=9xUUVTci*MmxE8@+m?-k*_%-M)cqSem6_jS(h#b$B=pn>Y6Vk%rBD+o54_ zyPjT#aS=0fH36iq78DJrbGPgCrxgLFUV(4a+>NoOmib1XRrN;6%VtPv-F}zn&!kjy z(nr>Hs>ZsK%0{Xh>)$l(8`P;zxjSW4%E%GLhHn^@snYnh1Gxe(jv-f|0pn>kkAh)& z^710sCzM?=jq~%1!ngwa#xv!7mf9^f&W$J!7)vIaN;>COI6d+Bl0^e&6A3FCcnjL( z#-IMLEA7otTnF%$Id$C!S1OnnN5KY9EjRcm%Jx4;^I_W z+LDwzHC4)~cT#r6>{vNNDps{*^`z{Io`Wqb_I*bwCt4m_h_5=cuc+Jj_o}9P@aZ$o zxfL(_`zAGf9~=Jr2=PC3D8>Iyeq_e~P*&NPKD+w(ANjXdyvLk>d0=%vRRuq%>Yen( zj;Z(%Na#u${xG}W$L?g*!#wjLa=pY(UBw=Xw;$>!KD7Qrgs0;^rvjlyzR3~Czrri*xx3m*NRX|UnX(R3QL z7%bvTqiJYMD>V+^RUR;=-)AlcAGjHI@vkBHveL+EL&mt#NHWG1EOd4gCj?_GYcNjF zb3!0p58MPV2EFEbj1!#*qIE%(7K49u2(gcMrrf3G9?K#(LDh~LeLZj!SW46wBFD-a zn(hG(j%6kVaCD6M2srq*pdt4Wjx9om-tY>hj;|@UuFq%Q#il&^3%}SHKOV}oj(wnN z$L0LP=p)jncW<)w>8>DsTF|y4V7xN{`V`S6xcPn3rPk{#T{4|c>Av!Sp$!hBOBEX` z1IEr34qbvjn9hQMufK;bb|_J{+XE01jDhb}1iU^vF_`9Sc99*GlIPb8uoGbEI02Ta z^0}GM$qdXiZKImIAuDC{s1e1+*+EPPMz$gys5hK+;J=6p>dN(wcwqw{bYP=H2V#6- zbU?kEDVzjRwNhh3MtQ)feXpqlC)z{tayikTTN2SF!-(i8M)U(m{OtL8!HTzNUKpag zM>Ap?wOeYO98w-I7K}5APA8(5;Y(jO#aR5HLBpye+S8RTjtJdTk3}3-4{$=)aYE04 z&S` zKabk4i`;ZJp`-l<@6xU!mDNQFq2ljnI`8=iX}>qWgz!8X)|F^S`yOilMzQ@>@7V2+ zmxm+BkT{|koCZ3^5CV(GlaF@ z(b0Y;wLea5|G?W!9<*u_UbVM_dU%nE9Qk5b(`;U0;xU|kfm*tLgbnR+}+X1VtJmLtVEhd|dTCa{lf5pEm z0FVaDN9J*I?a0;RSfNIuC2h5U9eBm0np?6Y$*zNU#}8Fw^mzfe%?I9XF{a-(76tJILvC&p!W6ugECYzR-rSxjsux9hX!%P4tSYjT0l0Fkk7oG}ERZ8U(7_zA}+Vt;Flp4&lBC3+8u z^h#e7`#ZP%()zm_Yk$LQwmilh$TMGT|3OFlqCAoN+u6%ON2|U?$LdOd2iZr7><1#* zQ?J@HWL#aDO_FllK$kf=#`Q_y-7d!sOypCe9M=b~29NfSq-*>J!e%9!IXa||jK42} z>~~KD;4&D0@4srpvU4_I*)H;z;oy%kr)rysQ#N-Kr)>TvPHE-_rzU$~l{C;VJ6Uw_ zXX>C(FL?v>L01|%`0GIY{Vwvi`jv_Rt3>astI-ycuTQj@BI4`QMAdj9_&zQ(Z^PFI zwNls?exG#MEOUjxGIR&>v*V|oSQ^$1Z%dW+63fWit{qnGvnAOVM@0UjwJAMk(96w#}mxu9@pSd21bK~XV z8#t5j5b3Am<>9;J;p_bt&`b@$r8%?nM~D%w&E_N2Pn5C%HDZQjr(cd6ij*r$n|OU| zEB=?rl`2g;OLZzvzBLXdI)b6ty^P^8;+e2` z&|>?a;Bhsh|K2hikFqC#M>moFkYxfM%#Nel2@ws(BN96`&hzT?SA~x`2u{IU z7(BXicB#!{Gve`0k;m7TBDBx1150%$^1~%NjE%-VT=~$SPM`Dh<}5nFb1vxEIXiF8 z{Ts5~)=_hQ{+!1r%ybJo?(oxPEYK2soIIkxW4hhnVjSp7bBAatQvv^GQM3(9kaI-Y zg>1T@nL_nF%QBR#>drO!S9y%y`%7#ncRmh!zliiQmcT##|0heuV%D7B!r3p=UQ}UV z=*nM^NHCXi(x2qWuk-r zq8#Ayh)BON(I3|7rM$5HL7ve+u~*kK`p2Gi$WQbaiS!pgEA$8GIb;sD-;vm1cueAJ z6>NKF;YPT0@p5?a{-zf&mUX4CgTsfjfzVo!!xM{8T_Y8nMJ&XL`w?i96}C(E>|mF_ zVH0Iz+wa*`W~}Um%Zu;9i)T9BOrJ_CLGI(ZQgPdpX~5!`znQyX5(Pvf_OIzLRKYUn z%KSw(z8_5i_uq-!CoK~2#j>gzd}-Acrn@8aW9r+3jGw<2+WaICKNm%QRxae@f6o6_ z-_B#;>&kQo{S}jeM?$P%f39CB;PFrOtw#IJ*!gvV4M!ZYlOnRSWC84VT`R+Ipv#=< zTzwL(+`@s0R$^hFWIL;HV7i@B=rq=$>%kPB=R%qRtMHWtsJhZT? zo|%R-_oVD2Y7J{2Aie+JnVX~qihle5|M~s2x$`=6&di)SbLN~gT-@z11pz@) z1$ZFBv5oxsKJdvp_b|sjEc9&Mi{)&BUT{68=6^k~5!LbS6a543Tn2Ph&!*$cPbBC6 z+Ck_4g*KcE!cXyoTXguV2Ec#m0f7Jav*AyA;;i}q|9$^U(c=g(Ce?9*_S3`8`_p=M zf1aW`J;tpWlpYrnP`{TROLh474S>J#exOI^+3-iuv*_`EEib3+$-GF;;+dE&rvRCwflh~*Xx2QoGzBSLYD zyAex`q$0|VZbFv34;)8q)U5_YLY7+&9OuqsE_JSz(AH3KDP;DR@ys72Gcz`iMF_t6cF_`E74lzOhPT$2acoor-flyZ*VAc-dPW}Z|tTa2(2q#T+@M& zY+*a*fiITrll{jLd*xRk0#4qu|2P)~r_>YG;(tDhbe*`9KOAJ63E?68gJux*a5j!*9VnBH7(p;?jlM;0{@78TZ zo4jD*8nD^mbIVESVWoHE>Jd<9_q=oJl&0%U((4e_@t0piH<};1hNzb5yi3s)`FQJt zxtQcP59n8S?7U9JLh}va?OQ;!$%o6K69C$Vw?34Mm54p|6UYXj+T?e5b~66Gm4ue% zlF&*g3C*>0`zfbx)>#-P!6y84I2aD(vL}Wh)QCob!IP!jfRv~fg8&>*W-l)zf7CTA z*AsY<&}MdhD?(C5SWt;kQf;r)b|7#yyGW#MB8`$ruSMyYK$g~(izaguQEl?eQ54T2 zs%`1ZQAB8@%Tu&ApbDzTsPq^fc8D}8(lCkiSd?QE$kL{A(UcSE5{lO0;1clfqr2I> zasvW8FWSn+^=aBh_;Jxf1EL2d+Ulnb{8|zU8vX@byOYoZw1sUiHy~bA>C-eZzl(H# zGA=pCs0`OBtGJfVDcn)deXadeC?d33qEom}XnM1QV8X@Fu~ew0DwcB~w%? zY!+z~pJA~FQTp<5Ks*!Wgk1`abV(4`*Qs=vJrTjKOp0#g@M8{7C`!v6M-||tF zLRAOq^sCRKPE8XUOpqGrl;}v8L>IZNMA>dn^NIoOyKRS_kD|aZ5{cL=yCa$wFrKU@ zktTcW*yE}9)cO6x`(ThqTiM~C7|>?_4-u-IVflH<2bydyJQ6P=6_)o(KG2A2dlded zB2`6meFz1PZ^<@7QIZ=tSa?L)T#XPK`f%oqXW=~o{B%871+&*H48UzBD#ibJrUMye z3;V_02DD{7%*501OM_p3$v}u5{Bf#iC|R@;3UDjEwsg@oP;~NA1KP-5UkDW*$=Wgw z+UP|HX^!qPxbwAa+f<`NF zM>&H=nQVnP^_EwZ4kU#v4N37Ev}G9lF-5Cpa6fR~^Vm56KpGS)~Ed7WPbKlE(T(^b7%pdSVK@ z=3d}7+o#03&S+YyKJe9GQy@z(3oec93cg#&7A301o!uq5$b*pVfcx<=EeO#l+x z*uAuoMp@sl5OOyLFfGZg4nKmG_A{Z9+<1mEJJ+e~)(D+#S1PQCHozJ$BBAU7o663e zJGp6T>;}HvVDGbo!w0`)OCguRz%xHSmc7}_IZX>gnx?@eNejF7l&0xJq-#6i z1+H^*g)-q*?$A=;rC%3z6>91n1N(<$KpP8>2+A%EUbJxMO=>%iRb&>a|{St#oj(0uerLp zHC^Re3~DLiPT>yWc6b{V<^;aO!1w!1qFTm17e#S1QNkm6q=^A?L@)d7_Wp7wpG}nu z6|vorq2?WVHp-*unTc9%r>*Qy2%(VatbyY2UL4TQpHl7EIlR>VtItPv^UVgNmW+z$ zv84m*tVq=vNm0m@nttiMJ6YF}u6xCRy4R%Y+Rv&hsg8gCDvApC`e~h4Ewu`6t9*r4 z=Ql-2MIBLkra$zBDtw{z3|lc|Gi)ODRS~bIX`5kZReFaC_=ZS5si+gEx6TanQOAQG zV*kBJr&-449GHIN*zc1GKQv4)f{u?uR)}O1;c@1n&Wr3tN|Xe?TiLN#cv{X z7cn)lYb4;yCh!)G4X7KsFX?lnIWp%1sK7YQai`wGsxu%dWV0up0RA-z#orM02|dti zg0AA81O>vK^%uh5a}NGz2H-!3@*=x3~X~iBLj%?uX!n=lS8wWzR3bF|Naw&igUA}*D#IVR52!(p0fi`J&g z$^+;0>%cf$G{^IExXj$oBM7x=&Bu}Ecw`QkXXpKR73`foBzQy~3l2WPCOMl$HbAfI zt${BH&GYaQE$mfDqie3yjB0(q7nCLc{ovuZ*D#gv06av%;(iwG{+`Cblvt$bqB~31!JA|5VSgT=&~3qAi^`Vl}k{CJ<`l=K(cu2tT#7$T=(w6+(FqI4AU< zj0UXxyYJvz_y>0w;C(DEDGBOa11m9dX_8CDg-u>s7rPQtAdr|>on?qk(({u%R4F#D zuSJL+l5>e_>#nLr%y=J2KC%_?{1g&)-4Bf0F|i!1-)+YitU+vpfgck~iE8`mM+U^6 z)Qh~ofEOWUYY@u->wl%#)CAO`?^(LHE@9Refsi)HiW`FZ+80#n)s*ZaAPN6OAfl~eN>1F!giuEwuE$n(A18re( zNC$*sfh7i%k`o5nmN^T*&>sjP`G@E?M5)gpk+_Mtn+d-0W0=&V2+aUwj9MGf8i>+p zCGL|CeXh?1dY`LEKgQ_i<<#3RPB=#Mmvi0C%SQ*pff30CWz_b-Y9j8V55>-!PCL2C z8yo61pw#b+Zh+ssO)lGbAxO^x?yakfHy$7Dq=&sUri;saOAKhEQvB%34rIX9Fzk(% zzrqJRAXanriz_=&@CfFPScKZljj;6BlmbmVb$3b#tf4<3Zu_JGau@Sl2(##NO7v6c z#S}^ZE+WcTR*<%w#NGGM!!SOVLFpM80b~3)r2UvstU2;{69*wb3x0+&w0(ry9^>sJ zJ(Ez|{rtOAT!SR{@qk5g_sCl$dK{3SLg-2OTabpF>{0v~unU8eglZcFGd-_Q16$Nm zJ;@D8S#VJG1-oRd)2P{NKp?1H(rCG9g-#kh<4vyt33L~$I;Cj>-K9D16W5@fFht8> zfcbkxx*R4f;yjwKiP#-|{c<@y6l_|V$ub@>Ab0Mn4A!^OfM_oJY9-9YD5{9 z^w?OzrhuUy_eeN&|8it;%3?p|?d$ zfZkTLZiOlmHAi6;6|V$d5wH+iAAdm?CVYiWNv6R5b|ddx|2*Y~RRQn-{WYxlN$jm} z`nT}QZiFpd?`yw}4oEWxgGW|ovW68&0=~C`6Y%dVpi3>1dXuL2=m01ga(JiY&FA%J zoZg?<2>moqEp>qo6tcY==-?5|h-!IL0X}N`IiMP{)IS+TM77MUhA-P|@D;Lb(i0!h z6T^DqU-ZNdo@jYl|GH0aR-?4Uzh3io_aD09U;nzA|7$ePoog= zi|!$+t+m>K7=&3M%Jw3z4=IAsT+VcXpF9t{OcR3`5Ch9duCv-HdES87obN8vSZhG+ zvUAD|gf**Lhc%?X41df1Y+cs;Br|gQX|ErYJ_(5)D}>-ANu5<7m;K{pdZ(D~)Ad>( za=n&67*6W7K%=!Iu4x;)ZpiiEAP>Msce5Y9J5b3LUiCdnuG)=BCD&sc`;}a-?^klk zBbdFvk0GxC!cGOXz!d1iwKwQGF1|V&MY^BR-GcT397gxk7Ixgn6dp}$u(tV7Vt1<148i}hz#f~Y-0cZTWXarhHdg5 zAjvYKY@eGltWEy&l))4tRVO@V*t;z|Ytr^BaQ)+_UyGDU^ce7wvA`r8Y{}PYgg%*N zK(VKc@ake%{uG{GJVumLM!bHl5jy>Xs|Z>R{litj|Gvw^{7Io#T~0H+X!x!R9!`Pq*env9&`U<}QVm69&rGOB&~jX)tpuW2x4q}xu%h-?J&oMJA_4`%t`(u?mhUi|K>~VK9}>>6gP$K)B}r+ zfambsIjYOx2lofY8SK~n`eTuPBGPXq_opky>;7>dH?#`cfnb>6n~riq_B|Zq7Dbm zI{*ubHW7ETd@(G*@lt;C1;;miW+L=ZgOCgA3mjYzlF1l;z%H>9x{;fEg+>rs10nHA zXttHO9igY9NFGJkLA1f3<>W7;C}3r;z6v|7iBQX&em6xE(8Q|SC z!u4ypAO$;t{VwCyD}-9cR3}-M7moAr<~@i$z)D5h#xh_!2Q}G5LKA=?=dxE$r1{rH z*BKCA(534$=zNz`+4=!O$gpM%-jof;e<#23W7_~*$d3=ho3aUA59(R`wwWmH)?iq+ z5UoDGotFo=9zypq?N6Y~(&Q{sLCnO|LPEG3dEgN&8(z=_Ii)0YP2AUos^n4Y+|v`- ze)Wq_MN!~lyx{7Fd)K0PZZ{8@C+8)w-DAfKx+?MI4Ugi0jUA5z1`|O?1|e&g+1IUd z6(M-p$?Gae(hN^&06j%HO#jiJX_}-iaxD|-ZBCIcpTdo8M0)(rdS78U_6OMg;OxZX zQr!w?oa6~dq8(f^g8h(w?Wa9#^BGO^13CSnOZ~xr$wNW9zerGT=u>(oKI~wGca7hn zMP?dM3no70 z!ZvsvA%4{c)3owGABAtY_lUcMZE&3u&k>Y9dtell4cPTE0jp=jasyH7jefcj`d7GD ziE2W3mzPGNt3Ld;xm2K0<(OH{^x$o~l~_T1tWec%0(Jg0^@bNAapss6CMD)nB29vO z_wrH7F00_~eQ099>~4N|yt2#e4{Cw2L~HSM?XU*M_=B2=eIFHS@r43@z0cH}Btq>r z5E(pOJIsMRPuC7Z;99yvX*bH&D!46Lx563>2QGE@Jv@p1BbJ&jP)@cety^eA3>pp7g<1`XO6FglzjIy!&XnH@*vwZ6d}9`^ACEE{RymlwZ`BP+3Y?jAIv{E$asUm zSbmlh=}w96fo;a^!<({1txiai$}A|6^NA;FQ8~*OYyt{4$veIIO#+S77XlG=8oqWn z(C`O34Ttq(xS{Ag8j4jtfbxoioPYsNOt>_j5(Cr+lg&MRtA+zGoN=mOfZa?b2jN<~ zt4Gr~1%bd>z=$ox9e;Q@Q$I~pc}S4~#cw&Az{8WW6y42E_Hi2j*I6{4XFH3=B{uyn zW^I>jO%i(F07CaOYFf{41tHcCNa{(AGqt;00g+pQJ5p&R{Sg?>~WI z>((^obY{S!&b}so^6^iEN{-VXUmgS|-mh96Fl+13G^5@4<0`sO+?b?fv~A^BeNM z3&go}`^5!d0Q09U?0y}_*>l18T>#FR3s+vC{RKJ>LkGhF^1chixiEH}9Gp%d9MKl` z*WV2?4ueUe>DhG-4nMs>`yhnT7FIe~`_}J5;GFht7ib^$4BEmze`%2Z8~%g#UrP*5 zA7IzCg>BH=KbucN-gkjW;-D1QE{3bKibH|ngjyy%9);6J`D9qm@iNY)3-_{V7wABe zA!H8L0m%EV4(K#git#}BFFuxp4@Sg0B=meJ98T6O`V} zfLRr;sR#TYiy~6dgx?-XHUo2>R99cPH)cDfY3csn3AKP;c0w&*1@-f89@jC{?+?uWhp0z!@fHO8|F!Ob#k15 zUG^{)pR^Y3HKs?c7aHgR*75qbhtP^6-l zsQz~L`xBa0rNLG2^4ke5Yfq_>MoFr#U7zW#?2%uC5~-{m#yh1zTB)=fgJIcD==xkx zDQz+r#p+;>Slz=_V7|_zI)^sK-ho35^|hzO@~O0&sAcVuJ}amm*bkrQCIurrH37S) zX7#WJ-*B`A7Fj%(y>%#Q?AD0j%E?o++TP$B#(UG~b-{zgNK*ZFI?GJxlW?9CxZ%4V z7~kh?^t#|>TRr+IT#j(0i(dkOxO%RpX-ba)Z}K_iOuWf|airav9Z6x}?;M~&SSHft zxg!196pzs{iXbo$B5}s6O-He@=A+`W~t` z{#K{@od1aGKg;#g28*D1b0-<;6hwc zJ)ELe!cF-y{^AShL>G&+nVTpu=hWmq`PuiB=>X>*LQhE*$9xcsbfsOOM?nW&&10xH zdZKW`muNG;*Cr~lvmL)PAf;!Ne7DjwQU0-@E-->Z^B(paSNi51UW(qttzsmXQwf?%j{!e$)vUb`)Rm0T8eMPBL**qk=aQ=k+PjDQK5{Qe-n>LxlL!JP%m2VJ#MM~_ zgp{6%xZ1!Cig3`yjs7LDN{g6TKF3%O@tOs}O4XI-{)Wj}$cywqVG|pZY8j}@TmFS^ zqiiK~cdQE(zI2tVU<=q;vfPUeXro9!B9Y@3LM68oY_%LpRO`eMgBA^B@kDm@T?h$X zLC^*o15>&zY*iE)z-sG)HB9gV@aWJe5|Z6cDYVLM*8$c~G$4^S#`Dj!9{Bi@K?WiU ziJ%}^tlwhNRcV8e+u>ptlu91B5^xf=IQ}SHM-+eXXcWo$I=CVyzalaekZlu`tos94|WP7{5Z$1g3w-2SPj?xbofPcGRVo+G9cw6 z+hJ~Y5~ZhX`4OV#K(I~3mO}g7Rzz+f>a7L|%rc`AZDvnzht;gxcD!~THCiY01r>Wn ze-$rwB!kYy_4}3mC@B6uZOx`RM z5PDeH+{`uT@Wz_sK`?XED!nt@d{M*mW0i{g^1zjnT4Jp9%_x#Dt2u*s!O0t-vEt09TtdO{)xQxcU^_ zhN^cMwH>hn;PddD*tz;aZkG-hI4Lg184P=Vk^${JH}SE-5+58aaS-4mM{`T7B9$QMYr*6O{HdakHRAjouKy zKa6K6wl`Krk){g9v@Moyo46NO{}m=%unAZH4t}_s^-?L!5Sgxd|xaor`{vUn(e*O9ic%Pa`)Il}zeJZQXdC!5#8@2~;ZZS^}nWw-E) zI^EYoebu!YczV?d0)`jVVo7x+Sit-C9z38U!WA9^i>A5!V($>UXgZi;)hsr^+Sq&- z|MSLAxb24IDk|ht%ER}y;E}*&=#R?VE8NNIn|XHtUfMA4j@xdpC-mtz0Hozv6GFlk z;EECr!vh2%uZyrhyl+7Kea>Jn_(du1lE9UfGiDnD`I2h6zPuKR^h1&EWcO@KmAeAE z6Vzm52#a)k>=C{*wy=}i^v$;z$hiCxLidSuH~Z#2T{?P(W4#ZaQRzq~Rr4fE_HT~! zsJ4sYroPbf(UK?v)_}a~N`n{sdRXacO$&wtKl24OiSp;gyddKo06oHDIfLE5&w%0< zwlvDw!$RSG=m2QQ7mIYaKo77b`sEF-9s&?m75D`6Zi6j=lSWdxeU+pV1MrzA0n;uJ zq=C`IZh=7nxWK*sdPGO3FA1VR;1c~-vmH4hf6Zau2`i}FgW*7y=8&9gK!7a3Z-*sX zzZLo>gfjf`wLVo!@0z}6mVYBXH z-pYPC0-()z&Gpj;KK}0lW`T!9+7NpTZtm!AhTa1j!khK90jQ^Mx%1vj&Xnp!XEZHV zi(n_wc_M$vhJ`LViz9La0wxcZc;{e=rGq72Jy@c1V4@D&c7D>SyaCOdxaUT3 z{Ic1`$J1T-U9JJW57@)GSE zD%Z-wBZMZ1(%3_2jHqj^+>UFPL^If|&3uIo)9T%eT+3E!$VkjAxJlE-T zmVwTzTyU;S`uRyT;ibn4yOdtb!=st6DJ=+W8*4y?;g}Z)_|_$W#6j2w7PFt$7?48Y zC}HRGNT+fAC@9jyE#ZNA>ht4~kp{F;Qs063Bht~}fYRKpY01gDVw3^-X@fvNfQ%-- z{c(eOCvOGGa5yfg|APO-MP4T#z<7dyaHYa7fA0sD4`Y~#fa6d$6e=%D*X z=qCr*NB)ZsMk^coxB+!3`YGr}Z}rt34@6PmI_Q{cyW{>SVwt?4W8VE>9J;=f@A8)F zW&8_lMo7rA?SUww>%j;nWclIJ)G_2$hk<)=w6ecG283v3SwZkAco~3wMZlet3xV(! zOwwaXcTQZC_Q6d1Rt)e{fJ4icKMp~_J`rM{IKbxh3pk|&!+|_#^K28*q{AZ^+Dqy( z^E)@gM!p&JKb5}F!$vQ73=5LBEA9Zr-`Ltrl%IOIS?}CZg`;c_PHRA z^DVmhpD^!mFq2CpIW8~>auPa%&DaDx`f(jpFifb4gN7!j2-x=pQ7vQV)*?}9%;hcl zDb~S#3oc%&hkL8#@D+tZR}CwCC~f}i_(gL`Es z*cNB8Y4931JjVhqnUQu2p0)c)*f=6)m6>!cHlp+ZSfy-42%1UDi4ob=2 z<~wna%b%*_sX6+A>UBO!x-Q~kE+R0JA18ax;OgQ0&{pKe)iBM4cVW6oYVk1%q&m#a zC-$)weE0)4kz#hmKMjbunLGk~Y5n@p3fgwb-Lq!5s5BUf>Tu10%DdV2f9TvJ7!G7t z3d(hE9DErTuJWyAZ7GOm1rm)y6aRzO;Vth2Z-2p6 z4r5cb9fqi1BEG%8FdW|l5wUbS&UY0Eo1u?{wn*G>5v-NC?qDk1=?25{%L4saQdi^# zkI2(RI*KF5#{W0pAI9+Ba~o48LMxy=5a<_iqt>9+i%Nr2Ic-_9Blral-mGa_4E%0I zx+5mRbGHAw5uJTBgqgO~q01iNl|68-sjs@)K<=tK0jgg@EpPoWIp=~-Fu&!O}@0$kLq=BH5&{Ertu>Mv`S|TPzZ+QUx2PE zSC`e*1qKklNGW~dvnenELXvAPy~!MsTwbCQGyC*S;FB7#DtPIzQd#9%Tq3GIGYNU! zxq;!8-WjW0KMrKg3BAi3h>s*X6I}p0jEYdkn zftvTvxX~<+5vh5<7|PiXFS2T3a8^=ISyr{jM}Ps^P_d#-FE9kk2uhD7u!i1f_NnAi z(96Rj(}S$}mPxARzS3GGs5h^NcefzYT3a)pH?ssd!1$MK)(i+~b(I$zfG?<`ktjWD z!57YP8w{`NUnXpZ!v?!*Izj?%4TkYABSL77Id1la)|lyyW+600pf{L9kHb5I@$rK4 zts#&JxP@-C#%-`30~z{f&TQ3u7f~ID2yl*8ZDd_AEEmB+fN&C~D9=8+2_~4=HCLp& zQgmaDH*u1ALpPdZ`(YxgwyW*})t=-c(2C@q0;2Hc{1cI>hU@Er+I~?9TXt1)1Fye_e5+8zZ<6e;zT$%XlB06;D1xn?|;+64%ZCyzwwCQ z<9~y1Px{{sf&C#FWafY8f3xxZbiXp8U)=x3sm->o#DtnWH3c5LsgG!;cn+ca=x+AQ zM+`{UhhMfi<#$s6>RAZe4Y7+-vf}s9Bex&!FYIU2?E`@R|+jl#v0(RL#HJAHAGWH?1@Ys zCxh1egI#)Dq7m%h@AZ4{-G>b*{;(Lj2vj0q(@yJ2vZM^2QEVyKAAk%k-vl2{?`WOe1XFTX(`CE{XeZ-c95F z{#52mG*KyplK$?1kgxvAJop&s{a%jI#v#dYD=v0b-Kp`9#&7(8Ho&Rh3 zeo&oVL}uizpV@)r#jK=-H@tw*ynCQX@Q6GcEKzTOvAKV!egM)>>4oeL_;xpf`%U(` znKOz5m|q?2XIJm!Y<&oLGsoND9I1tgsWD|q%2#44JWEOkpFFqa^7vQDivmga5S_|4 zzSBR)thNEPhbZnalspm&*m~>4&j7SC;*Id94vyHS1|t$_6N__6nV&6S9JatXJYzE; zqJ{aaJ0i!3yZ+&f&D?$A*Akp+z-5NrTFg;uIgidwIR>QP|AS6sK*X+*?C{p~D!nBK zj+*hATeY7o8*1^?434*&(aoF!uxqpPyH_|&^_sX(r-_E?po#E zaGh|ANqhB*A6wGPRZA^b-`0LozL#x4@%uz@JposcU>D3NEsz7hGWetBaU-n{hUF%% z;;fkfvhJU`mlKdsz7oh+o|7bB227NTh`Zt8jCVNshWmkh`+!yR{uw7wp1oqWB&0~zu9Ta5^HMKa_cbVUqu_6Bp7s6}fGM2mDqj54mI z<}6WR#>$X^C=p{<#4OwNBr{Jj`)O2+#4I>?$N+wc@L`fi5^ByOynt2IngX4o(w^Z5 z1q_Eh0TFd%mPGf&O@6vhQf(i1@6$?Xbyb0N8WK$rtzEWGLo2P*kYb&NYOT}IAFR{R zYu0J#ed{!|*E$V-X`P08tkY0-<}@@Ra~hhNISu(Ur=hzur=j(k)6gF?ry&4E!11ca zsQ-N1SSf^(zc(2Pe!J8l)IeIP0SZv#fLzM+QdtDQZKS2Vx)3Toy9qkalxjr?%`2?^~|=w?Q!H>(p;dqk~?goI8hbaPMO15s(85KElVG*Rhs;>V65m|r+B z6x+>NM2Xl%h1uhI*q#Gl&UME+vE7^1Dd1t*ghs^tdMQ7w&!Y^v5>FL6<5`s(@l>H5 zPZc|%4Q!XP?4&9J3Vb|OScj*I8=;ApAma^DYr<27m+(~a4M+?_VjG?+gz;3d4N}@6 zr8DpvG$|_WYw?tb4$dr(P2&r2)BV+&0$+(rJC<#tYPMp#WbA~CDkuY##S=V8z;>gk zO4d$5OTfcScvz;Mr_-;pvT`H;ZzJA1xk2O$57w<{iuSKPqBW(KA76V!i5Um1Kfd;e z5;LdQUvljQg#LA>#H=t@d_WBS>kdO_28^eeACf`^|w5hm^Z5jhO(0=F&N-n zDRi?P2G}amk$Q82RSFFYdd+=04+?MpWoGRGy)J#4TV0_w1RV+Ea%kWfjF=Whz439p(bMaKs1BnHY z=)_Zn0z6f8LW&)RAnSN;UQyH_-|d5eZi*xM{}6Q5k@%z6L%@ge!#2k0l= z5fE49JiN(pt$A4BcA`bV<7ZxVSe`@l%)oK+ops57;#RFs|EHRVP1Z0%#XT6I6=8T_ z-EAHgc$+8@tEe#R!+4IGV<+8h;-rWete0CM=HIw5QKE()6Jx;8^Gko3}$?OEFNa=B|IzkGK3^Bq?8=`wVW?AQ(ouXDR zY%o=a1BZP@S@JCc-jpTaO-8-!u?!MnrhOgN^UY3qqNvsJWI>Dgfa$|d#7xSujC~!m zphVyku_D56!$7C;!fV_Gt{l`rpR*tT01P)ka?XX2d$%q~#v-jaq@3;xex*Fea{SQXgqG_73X&il){dW07NNJxymUfnl)ZB-+Nd;Er zm_fdVwy>@rBe3c*_jP#-tOhxowy+yP4bc-H%6|W5s(qzZqb=-`dk~_H@o{WSvIAA= z0_>ELAIo&zvjUMq?}S*PaK6(|xfQ*%m2C&BD5Xb}7ZPfD=GqS3^ia_ZflN>JX1MSP zWVw3-d0n2x26;4ldI>_@^#sBR)j(Z$y?haEWvk#fjcSgPAv};*mgcA$vIfzEabw{T z+REOz3-S*T+M0~9Dyfz!*LEP0=0wTTz2yzwVOA78BInQ+cHbM^bfRA<<|k8~{`yrB zk9#;kRqhmMr$kSYie5$Q3yfh|Z)jTKkx(vs@QoC~V(-J<){$TnuK6uO$Xz^q?Qw*a zC;8shDA8^)(r1y>=}*nzLnAG1FP}}l-=JA|o8;t!^AlPx=nif8R}gr1BzyUFO$+6+ z91aA0XXE9xm0kTKgf{ARySz@TK_2FXyU_z6E5kq@j62w&*Hisscko7(77g+%5uDM+ zGEr~&t^Q*9hV*czUCs0m8C>JfwHH8^v+N7FwQIRR4;E@tMMR>_jlT9iP18cFS?Kmo zLFwrWjAkGIUDHBE?1nU~ST@87ZNfDtG7$2*Eo?PV>SzXN55r)IpgR0t?$ea^31Z}o zWj1}{b7$#LgS51>eAWi+%FsVww=P;nrq4yYfbV$}_jY>;15j`#U# zZ~U(0_iy&Z1@{pF&pJX|*rspcA|4LXfpP3X4wIjgyIuqEU_~9v2k?GUxECUdu`yPJ zHk2*)QXi32$MP@sX(^OSL*6SrvuQQQ&rd%Swt(aDELfNXSHo+yvo=TtnZmVAxEdxB zAhZFr+ch{YmrBLV*TRZUY`wAf!w2vOfh>PQqS`zU@R zQEkId?9-qv-hkc>k$%A2fd)0l#YW&DxcVv!+=7&S6x@qz;Pp0IPuy+z@jMIM1vpyb z`!rJ`HBx-yRflot8WR{{FE--pSBwY+_ilv|lQV^)(E)RgIc{{Fo>k+$(n=~CM0!*- zHTvmiB;;d~y9Xg=h_C@R%0Ssy{K)EfvifXj}a{@x!aeI z6;-dxP-G8eipq9ltOhicv_1AugixwyfGSbT$^kclpBzPPdy;C`7*f2lO#iif#_Esc z`z6)!#pf^!^@*p?H+cd_rKqf2c6n+FQ_XMil>3!g`O1hyVtE=Y`{U-8sN(1O;F5hEnTK{0V~n!V{f74^Sg1ZoHDN+ExM0BG@NKH zS{>eGnpO0!{iTKfM)JS#rtDdGTlFyb3WfuA_SRov&4THB?DaF6riI;g0V`<0O$XyY zI)^^j5v_g}EHCAhan)viHgv$|+Oe{N!t)wfuwe5!6q*4=1Trv6q?6FmF30 zx@4}9e{>J?(iT5$1ciO!-Yu~+pozWTlFmLqO2i{-RHPh)&|Jr?q7pI2FDB}&KFJ+jo(rFq!i>xS9PzAibEOa} zfMSxn`JwmXL(^niCly$Y{`^MJWbWxRb0owvS< z`9i3iQFc(CRT(PW;5(R_L41L2@EscXJtIxVn)wCS#%IIov!`1KSSmv!;y<8%LK^E} z!}Y4OObqPnQmZZJvwa$e<>+65J)iE=Dno@p7s%Z-JQ5M|lvR!f<>n+xtf@ z3b^}g{i6p#Kz*WYFYmw819L%$Kb@3?Q}!gf6qZO!#npe*rQ#DDGM9=$!VfmBTp$a02E#y48 zCq9}fX+X@X!zQ|%+_wnWc4K@z>wHD;Q+a>UJ>4Jz>!!NpTvCR>(GVab6+4hS5G94? zLjqhEBxnl@aWktPEijB_rCWoB;(oZQBwmQ71PXc0@mLR^kXUovcbfBv&?}l2=aC9& zJy9JOUD1J3j|fn69Xuqk?k=nKjDG2++c!Z(a9t4QGCWvo_uEY^7AbU$CJ2o&c^KEo z{*0)$U6w7v1GKp9++YEq&t*?M(e3z#Ua z=7C@c-K87S{o?V-7LDdfqOLc|G1c5@ZNG-Yuo zQWl?pFsmfkB;cpRKK>lU>Oa6l=b>!6zTvYs7UZIj7b2;JtzPQs;oSq%t0{1e55B2h z+APrs+=P4JKHAIHfGO}nKv-Gj@*=q)7?vlI3LYjX0)s_VN9FVmlzjLB#tp`-59}$K z`a_TgV zPQQEO15ZN4dX|;LJzGfC39z{=)P%R!2@pQ&aHH?5Ty7D(!Vp@0)KjziZW3DE?W=B; zt)bPL@DF=D!y5`{-VL7-)qj*VJqAI5aqyZ9gf^pf2n9O>_U;Dc$v^?i4Bt`NGj4AS4fU*U5P?@MH4P?)V5{8|)bIY+)Om$l@j+ z{aW|OYz&pPhJ1}euv5<6Unsuj~4LOFYG`+v(jV^ z`RhZzM!*hl{WNF!5FxuQRMv{Oerj8ufw!_TAz!1XtHCJ`!CTq5c$TND!7f9__>ixW zEuROm_JQSI%r1Q?MR@fkSnn|MZ2e1c9~gr-Qwa6lh!Co!u4VVmB8`0lXuMNMOy zUeq*N6nm0~#EWW}K;BE{I5!UVW#50v1Q@|{&+i4}V>@%9p#(_y3?{ZZdR8l;S^jLgZ?Y!TBfVbu@ zt5sj=gP>KkPS~*BMQVI4IQTf&cvt@mhn@pltLkp~5t{9zjr?@-R1Y75126=EF^v3H z)2fQV;7XoDvzhM;O^d}Kd`~t}%l7FVsSK^&$4p;wv;WbR%IbY%A&NlR0h-OeeiJ3-qP#xZVZQRY=H&86`uYOf?o%QQr}TwQY2u`PQ;DbopiS_sma|e z&s3`r(zLDG`so^cDl0cpLb<$@12$zB_IPPNc7L zT>TzNnN;?T?Qe1f?;`Q ziZo*&0VaO+Qz-%;(2Y6SAHM)WQNz`b@RvCn$yBj}tv8HK&E`Hnwna6P$l zqDY_-9+;a;CWpao3e2~-+k}^f1-chxdN-eW5VAQX)28e(z(DbzZ-9eM(*JTKR~|45~6Bv=!Efu-OGvyS@mN zkzMjWi4GO3dOZs?ZS_z#xxZq(nQU&oM0g7BQY3eD?Q!9q3BmZyWb>9~!&|-~SJsH# zF~4daCPsR4`TJn(ddUZxGa)d|1coT&+7snQSI0d!lz6{_;_1&?^ zsf=Vl?ycKsK*${p{0Q2<*?{6@0uBFfTG#Pd+I*MS9r@nYO#(ed-diyB=G`wveYujF zH&=)vZ>VG>p*wuEPUP>(*$Ay85q3Q>wULUt&@JQ1z0q}l?*lvXm?w%PQ&Uiru=k*- z&Njz0d?qlKG|w2e>Kk8v9icnKil{eKVi)p9($FnAr2BHE!io6%dA&9+sY1)q%}=?+ zCzXh~J7(GwIb}?tQJ0Y)C7Ug)PX450;T{s2ovU{#>zpoG$-U7|2(hy{RHOfsOif~U zOf>BwkyDob(xF?-OY3HO^P`1fZ|be5bDl;RY+d~3wf~EC;VHXifqos}QI-@SWl0fI zmH_JfxrJa;U>x&3)4wp@V_blRXm+>VUO#YcOu8D@h9jlGWw=3ZZjV1PMP&kz22|k#Bk*O? zgd#8jVrgPMKS$3Gd`$|&_2a_IL9KqH7>OC>YxMi^tiWxA3RdFwW?2IgL`H_6_CPVA zLN5Hw1&8*C6HE+tf!##PPUHDh{c-$$U26(_2^Lau1wPaN(VSrfM+t5s?uZUOjT)&s z0p3TIcv`K@tSZYKApEduNLeo+D_t6Pgde1jvw>yE3PiR2w;O=KY{H%@O;E1%QoHx z+xz2dQ35Y2ekQLLiF=OuO%ZUmURH_c7ke*)EW6}dCPvt_N*s6S?Z<78=7E=#t?(lL z4)DxN0O}RRW`MH(w;al%<^;AMOO)V+Igtdm#}c#fLRVb^+rLfV@|_86-;==hh@{$T z-{(N`9?#={Z8!113lAso!sY~CSeL+yK2KnKdjgl|-NN(AZR7MZ?FqeH6!I?B^Ufsj z!jBTTyd{ClTNBtm9q3C`M^Pg*zwpaM3AURf3A_k;WFKFbz~vt&u)QUL7adMud+}mU zj)i>*T;2$@O5pPP1h%tEJm2z%aiBwl(7ux_&yIuk%J(JkqB9AOZTaa0Uc^8bxHy6B zce$JiT;7|&&?EbNNL$pA!1j+4*#1=l+dC6@;n4)Tw;*Hw_f3wvOi768qi(`ylaJPZ8N@fF1r;cNXz1{mj0Ka*6)&AVZs z@=Duk(MkL%(A{wnZ)oA3O1$P6X$)TvvFQL(T>>w(4da>iw)|+McSr)4?@8eD{RwP` z(X@E=%)IgX-^u@;#%Y=yCO%|pa*J1|QQo(DxmW_1Pj1tH1F%C0yzqZ~g-uDU z>)kffv|8lFbDBt1L<4`C$g!&u0=7@9hyUk59hSfgqX_|*PpePh@?G!?((MuAwv~;o zMRFmC*#*8}Q$S4MgDFtAJADqC4N9>3Z!Z~Fo}9R0VrpAc5E%e3WTw$#J5^D znZ6T#9kW$%xZvrnnd$@FRMjT_9B-j zcBdto+t1G=nkSA)cD$s`p0&qdH^+w&pmcC;P!b-ZnkA7K!^lm+~F?xwQz_EaB3P zW&h|}L?+e2LYXVlX36aspIeL8UM^AFI9?;>pVWeb*YFl?_H+^igSGq!Du+Os>~`z` z$kneyt8T{|{NpX|NMM^inzLrfZ4-EMzKJtFuWN2>$0<#N`J%5`&Y|q%BZ*nK9C*RP z+px6JfFj9OW;MP z61W@~?9l|aPkx1?0i1B*r$lx9pbolOz6)>#PQ2(?k{#{jyf4WY?ZtQSYB~pu^`6qS zjj?UtYTAJL1@rTs(X}Y{$8R+a?3D|{+?dU_&yk{glcN?9?5&fi?Mt2*#X*Y+p-O`9 zuZ!J(c6)?6-h}emaQ{#k_QUJYj>jFT8MfL{i$v@VOVsgu-c}n9W~SSksJC_Y`ml-V zo?P#MSuz!*UAN;&{;>)rr-PmEZcgBe<&Ik9rM3@8)*`m^Wdn*ep9b9cdX}iIcVr5) zuSP<9hxoOuElUR@PbY52<-BbOeIwCkX_DNlvNWvuu%RovKGkZ zp9FjT3nOch{6mR4l#v`~f_;`}N7kaiC?Ho@XGF0X`V#b>-FGO_R*7$&@A7!5Z3uMV z2Hnr*-Pi4FfuL^7bpR53`Cs{6i8{)3XgCN?uN+eB!&918xe=bMrjD)=`T$^WUN%&v zFqju7>41F)aquc2DvVcDqK*T};%>*T5$W+ti~zE=`LXX14weBJ5#L{*MChJVKw%vp z%Nry3?2N=9j65IBetxF+r!v(aU*69~)S~#*G(XbwZ%E~P^KKha3mh|TpPlMsVY-h~ z`};U&U?1NEMNKdqkOs~tFSSL6*CHvHH+BT@f1hpZaK7ZZ)M%GnPC#oP`{nNpDE4IU zdHv@|#~y(U{k;`fFOEMBPfhR_hNlU};Y?}^EK1;WTK7`hwBfagT>(I*b08`F1}kfZ zvL+~NNOvez9tO;v_kU=67x1R4v~75$X=o@7t0;kbK&u1|mO^I=+7gfkQrwYLK~Y+* zSS@By5R@hyw1r|CB`i~%cbpkVoo^1#>tQ^L>+ucGw`LXxmU= z|JS|tPTH#T&OhJv|Gh5A-fOSD&ih%`Qzv-88*raAX@ZcoENqc&qwkIouD0JKX;x zg?lHmg2KIS7+1Jo9EFdq5;x57(5Uz~c<(5TM_mnmFd5LA5=G&DgvXzxDBOroYgQ`S zdS2q?$vikiQMj*BGIUssz3G_8&hV^^sfl0_!Oz~KCnVfi(K59@7+W6*clM9VxMT|n zpZn%)IM!i2KWYmJ$EHmC>JnsFtL3g9j`6xuo~PkHJnk=@ISt*+HSGFeY(*p-TsZR> zf`a0ta8xp0hZN69hO6)!n=*4NhMeEfdc>I24YV#c*t)&YeD>EUg@mQz1L08Vh49(Zrf{gZKYTz{m&5%~m&2jr zSU6OCA>0pjIowftEZkA@Ww@i{XgE}IBHUln9gdmzhmRM39zI_DkMP;zJ*a7TPwAQP zp5n87Nack4OJ+{K7TGQ|<)9HY*Frt+&=B6FTHHPLHtzbldi?VcSC6y8yfgRKA3O7j z?&39Q|3SKO_-u(G#skfYUL2N+Tf$*c24CtW6?tWC3W?|Crc)U@PAsJU@=tFEu=npXYr&^_-ygM z`d~$I8d^T+nqKHtv`F{-a6c5?a18otIHoGP;n)up-2r(Rj!n_MPUHG+ICi)0#Z1(h z>$|(+`YvKUMHBk&FEXL;4$eyY)quV$Sd33+ZXv4L`!Dp}!7mTichQDbsvI=bAq#`fh;V{8`a=?@fzK#sxgsqQwa3`tIC* zS?1pfKDwB>6JPL^!TLXy;|uO6IUYW|aKhd+-X5ZA?~|B z&~MMC#@jiXn$T}YjzD09dW~8_>N{gA>Y{6grYA6CE8-8)Z(mD|kEq|LCZ_*7onHWwhZ7~aKNX|GuIRV_!*8J9^6pO$_d`1g_oo}zrgHuE`{7%Nc=81ei5?iD z-(HqTkMblq=m<01pagUM_BQ@tK))S{XBI>6a7>WMKME{9RljW!VBX1Z}@Dn?mhh$5}l=#N6}|j$MY{7$Mip;@7^7M zZX35u|I_;JoJ5)O2g)0;mr%3L|pwf4u))|Ji({? zuZx`=+$Ik;fPznVE$*4_N&NV9C(q*!n<_qC*M&~fpxb@ElOWp$UEq8tHy~=zHK|wI z;YK1X3&5YE4sSLjYhbH25Y7zKF9jvCBRMl3sKI_vJW%i(hF`XYh$7B#l_PMDr>f9u ztK7ln&|bBgW~G{YZ{XGBxRETv>lr%VNyMwZQtD|Ie7e70Q0i$`>p30wO!q7N_;ktV zQMVKQ@w$E0AFtcD>Q%hBsM|OFodjy6;2W(G{DwstTZnk0QetyxFE+_Ddu1*C&jU0i&Ccg^!bXWIx4yn#qr8)(u4ooEQvV`|Cl5^J1LGSOkvXz4v$;yq!i62A zI(Wl1w>@|f$Ag|mS=j!`>?gkd?D`0=>Nz_!3%9>8X-~!M4G3 zvKYp$J7nc=1K$fTgQ8zX%@LgHjSmViA%PXq9Kq58qgcTbTy<|ev}=Q43DT!`5klew z0(4Qp&P_ZC(G$mrx}ETr68whM4^}Ii?RorED97f%^?TTHT!R*0V#*}q`R9RYl1O@% zU9FdI`)Kp0|v^N|G*i2>8Tfl(_-CwC#%5XUHt!To4obEwF!MI zlEj-E2;nBMVrCT=<6KUOFZ~^0!Ent0p&sUm_eCAU$$7(#<|aFi1&00=vo?UxTI z!|#Wt_T2tL<*ps%Z<@mn7v`R_U9;S@G*|Xjn#yu}SgYqm60HFth37<)>p}cig#U^? zC$z3RJtvY~lRYPfxyHy%u4&?7cfv;fjs`-c0*8Ov;eH5eLtB3*i8Ac1`llUKf|~m~ ziS(qyKW&$CzYX`x#2E)rNe zudruHL{H>8n58qruvuG(bO8OncXt&~lf1GEeV7!}jr_diwR$dx>JeztqRe76sxv2FqixK3mH%cHlI^U2*r?SffyGc;aTR zFx&ElWY?u|E${@=?ZKnT4sD&?5?J+5A=sHLXqzB3hw(^B;6oVr24GRAVE$yn-y~L; z+mqWN_-9`bK-%*3gd{>du`%?S8#RP%w^f%B`bva)U}l%wC|=k_$a5Y!$))qiM)yq5 z%wNSi32{&57GZ+l04zk=cvBdDLK?T;r*p+RiDVR8SD{|*%J<^aeuRE!&7Noyt%2)~ zCz|Z~g(o`PHQf^(<{BgU4rLg60LzBfx!05##_Sp_;h`J zotQ6}LGDA`{DHWxG9K@0CEiiQyG>w*W*%?Upm=#aUT-~5?>)r3PGE-L@_5nuMBX6g z*)JQLm3V9WI?*P&0Qb=KN^pUKBc~@efiEH(CH0Q4dzQ~7WY$5sU z{@;C(>-ZN5B-9xW_P8Ex>dF@U3zDVrf^Su_;J+hXC^uX>V+#(6lLal~+4yIl$B;_S zpYA$rXS=2G9(mN7)a|L6T0&pxTa_*@emo(14%H2KKB>@CtWrUOvjQu?+vvK9V_IYQ zGQ-;Qog}wSHi{u`i9S}m^l^2x{AM>dEq&>6S%x>70zExQA7X|X5YgU7cc!@F?}Y5Q z3hmsEE0|r1PrHziVJwf-q0B%IS{TZ0*?6L!)azb*@3uiWr@guUnLSjJQT(EwbZlSfsfO(wpK9 zkD<-D8~N3VOM&f{E)jqAH6dbZA`qT89FBUxU2D)ct@x1PWSG;DqzbG_yiS&7=@G%( z=1vhe!{M(~@SHokW{$uNDbQc}8M?Paptg2iUeYB_~+<_-UEU*D2xvYKA}$;ZhUO;=2e+gyp8TL z;;Mn1rB9WyE=@_4xZSTIe7z+!)WsmsEir-K(k%3Lc#fwCS*=3W0nC=XKUD~dL47$` zKKp0O$d=dk;-iV$uKASLb}5v3onSd!aqLrGZ+2F&91`d)=Y-xb1i9JsO^U<6M(@z} z*!{^Pl}6akQ{j#92^xW*b-Bx)>utMsx6peC?KQqZ$O-{?G;6=$ThKRX=neUf;j76x z;yH%?5Jjdi_bWS`r_L3zh-xBzsRM8otpFz*Da&#ce!Li-qXp0LK7q~ax9y?+v>Mk-mThwN9{fS9~R~;3ufKgIyFnNBbO>u!B9;XQ#J_9MEaE zz4uGILNt*n$os6Gf2N2to&`GXqk4fw>})q`sg2nE$+HAYGy2G(6=6PNwp%W&P8Zqo z`0$QCB+K$VfAUR&|1Ldjge?auuC%j#VgTmsDnz*zvph#RmL`k0F9*`@XLh!qLHQ^X zpW<-)96!P!{%pA{Gl!|nr)Wb6+``o6)+a~4FkNH^+{uReo8)K>%%;2#cMc{siNzAq=bs& z69p1q{z&nQW~D#vGyFqL=D^poyuIKGLd0WBV6}f#V7d%V9GN-ia*$tqRft~b7RqBb z-x5=Sm3?ky-@&I9diDwhAjO?2WxUD9W~5S@s2!1j1KKS3jg8%%goEuI zy&B(&Ah5J1$1<_FaPtyF9`x_x!lbXPE$6L%n@OIbSu@(o8UU~29w9a@mF3(xz*fOYXDw*mU}8S~F2gh*+^3 zE9Zr#B`V!oZa~Q22&zK3QFCu%LuPj;DWK0c2rMmVXAT3AjfEdoDReV6UnW6@dS%ye zxNOzn&`CBv{ZSRMvx`_PzPhc z9ZRLp2MTksfW`>Zx|tAY?T_7DFGe{Qy!Dj>8G=Em7~|PH40S$cKX5AYG}t6)B`NHu0ZeQ-A{! zCV8;N6na9%3 z%ON|Ht($BH$2^vN-r8W(!NHD5SIWkBKdK_EOESpD|K?X})hqdqV}ZAWdh4|uWU7bO zJgp^!yXP&(SAcm*6)`Iwl4V~`w1`XHN|PX^@b3s+Zy0mB6Np$b{?%2}8Zn6w*2M=h z9EpqAH++EKpe1A{_ux#*4cORnxU7GY1B(w9v9fx#iq`|7#V*&+NOh0cG}bDI1-U_x zgMu8~l!D8RG5JzLR_z!3Uc75#4L09$wViBP0p8ZAu3p zyC}|Rur$zT{{hcIR?my;@EfLn+ewu2(WeTaU3`M))#sCn*f-P* zgb!Xr&{O^U8vdLEU;y~T>FG;#Q>SmN)e}y_Z~+!6{yBXq{B~pPA}SmDzprenTG{U} z{OihgT^Lf?TTTsBb{Z-RWPV=1rJSoZ-i3m{s9Inx16?;|XvNZ;HU(W(@YL~tD%h&9 z@!adf2wAmT@E2C+$_{^FHN0d%LglM8<**<}s)5+J%RtEQvg&f%TKjA)67MIa7a!h{ z5F+C-YnL}bLZ}_BZHWt&Cr(1TL!R*AFd$ECS&-a%*(m-E!@)H|TWOkavz*@WH%TuW zpWKdb#%4K9x9mHQ*7@AZ>ut^Y!fN@FK6UY;EJr^$4<*cD;8JToN83NBmhM+-qM%S= zyQ9D58yDB{L|G`h={!sgmn+07LUi4ES!VmitOsQ|dJ-PL_`n3eZkIG@W-4%{TB~oq zoYuVBC(GjP58}&&TcP;(2RK&42Ys@f)eg8mKjvki0oLA!v|cv7a0U0~$2^|c?^%4` zfY-&q`JaOwrdt*K-KR=%CcJY(*Y}-7Q!#Rpz+$WpNV|W%UwYKOL!

DDF>h|4(2yRPdtfMz%#%T~f zAD-xF*4aCHJ*irs!Li;>gSG_Kbh{0miA~h^X?5-zt|-=1Lg2F4@ZK2+m@)$NDN}LH zaPTk<#?t*jJPpRAjs29W2)KHMEsZq4cd7J^Qg{QF`jLfr1cB@J)?!83T-Ah-J3a<2 z>taPQ9Md|?cqR8PV_v8K?=^C!b-;{^Ro#-VD8BsH@njIVg6oe%ZpigV=n3JNhh8nt z)$|4O!6Ea!gV@~-#?zNd+*okr2uuox{jqpCi5>@Iuf5iB1d-*+FXROaBB_c}o&^8| zH^0toZDo_S)X1eHl+c?9xzUbUsX z8!vbS67;}$80D1PVHv{<7Esm*E+}zYhn8B^_L$Sg4@q#3KTTZE^jQ7BNR$C~j;Bb} zVJMWWnMLnioj_z*AZ8GVN9e_=YD@VAyx@_kn4)ud!6P$}!0^jb6(um8iv=i3*!?U( zK1BIc^Rz*n_6_6&(cNhne~i*hMwwG{ug8U?NyDXVFTYPY)D%-}CmxOl|CM|eK8BXcyD3Q0&Q`fAd~9-dpP4Ht z_-zF72jD9SU1Ic2Q9m2B)%dTAXvtfzrzZpB3H(~jzd<-TcHxQay>QX=z&pUA3gqc{OHqBTM>g3h^rcdW5VI1cU9)XlKE`s#2 zQ5{8jk-Qzoj$j8-NU@WHQET+FrL{)(?I#F3$a(K0zsWd!VVgPc9iT5I@XJ&1+Xcf3 zzqvKNsL8^4ZvZnJ7iA(uCo(hl{2;f@nhWvWj}Yz=I}HcC*~+)xT-^90a8_FtfrqoL z#;ZG$@zkatK$Gh+OLtz_X0{MIl_=~l7VuvIc-3wwxokDYe<(qnkNTRr z6m_Td*Rl)K{$ zSR_w&XJL^)=b*>a@$ZDw@vrX;_*eFwjJ#yOi4(*1%;p1f6$a$U^9S4eA~s)kLmy?rx`V-$CWs?a;G75>!!DQ-^fO0+aQ3;QZ zh4E(qo%T5ViEZ#=QN}gXqEyLBShHFE+u&GOBF$m4_?|@ZjWn!Ab=+CEF z2)3K7J26rBGTGZ|^p=I*zA>n`v56|_RAoZCM82D4`RGLXSN+;dXk_pFX0yk##g%@rzn68by;a=B`vl6NUxR|0!_A z*j(;{G0)I1*E4hXuT+|)LCP5_#0K_vtGhd?yPq1^6IRW_pBh*UY|yIw zGg-M9tV)vBkvzM&pM1ZPj&2jt{|nk;3O;0X5;4_YPl=DBW+ECi>oTc{N*C&v$;;#@XfX@~R#8Wwfyp`_^qM!T#E&j9ad>vB}jw zMAy(WeHQF-1RK}NgvOLLcDh$4oTX4Myvty(s1-Fa_vc=CV6_}g z9L|MJ^yb)Z{a5o&^x;0N>9#=53W{}r`Iq3@uq*f`?QZy0w^Df{M~d|) zcf{H;_a5WbArKpGHJ0sx%3*+ff=jeYs-!nq&R!6M2z!t?WHzCF=U%R7PLZ9M6k@p5 z$T%;t4`A7jeej~S52j%sOitqMyVKT(_EvK<7F}-|VyWihmarQ;>tkcO9R1yDTecDWK@P||uLXzh{4C1TFQB~G;WaLl*%w_9 zTg6gMw-sJMt9ZSp+b)syC5(f82*&4Uj{&lvq_n;D#&o?3pbb&WXppQ#89;EtpNMcFxi;gqOx&0D7l}i@f;BL^W+9v$ulTG;oPgtwIS;T2?bDaQ zhlU^86P6RABp1>b-Wyj99Sf%_esKt9EyK8Y93o?%7~z|~qzIm+xUd2-vB8_~Plb9Y zIU+}N0ljZf^ZZ!33xB#%*n+w4%0FnHdvhwgXr8(52k(VqW*K(Y)3Xt=dUwDf^*hNg zlJRM?X==K^iE72qlkpl~B$?^R28@aRJ>MaqzRG1`9*E^TQYdvMvdb~HTwshsY z=387B8>=FLv3^mTx5K!3-wE?{q81~qzp)^U?@c$YyRH9@>Wz22S}u=B*1i*F%NXFf zZ&oVC#3vv`tv6X6E+&XaDl^3OiF3~My&e@25l z&-(8R`0xC=`3g+*7wn+pYEAjzS?wkd&dpc2m{RB$huC5S?&?He9cj!l29dS@p0k3^ zq}1M}z`1OIe;#v;%wdi(xokku5;nlUiaACimd==BHlPTR^868FVSbyLw*#x_(?_IA z<<(HtVep9l>yv>R4Oh0Av}#u66j^zKten%i^3$jcf-Coj<|^}vjmE&L!)CD36-X_= zg6o<4{hi?7jV8dO7JN&S_Hc;WRFE_=b3^AgSECJ1sMY4A98*n*K45wOP94~<#QxKp z`U5A9gQ_$3V9ddnarZjx#VU}jq#atX15_0n(Wl5KJ*!scufJLe7xqMZp)~x7ldju5 zSW}{T?#*Y5N>7@QXOes;##{D|ZP;tRlH2H6r({AQ={c>^aI4Z>s}jUOr&YSjsx;9_ ztfK?W+{Iw#&f87f%_;}$INXBsJap(RZZ|%ni!3L;vNV(R?NU3l8F&>o_t#+u` zWL2aABr4t^EAB`@G^~m=utdc|S#e9Eq9R=jK28HpRP2L_;_(VP(T~idABt!PY0Rxs zcxo|W3zo#>rwgsb$1-$}mzBiW!X3D@$C!Sn?-cRr#Mp31e7c-rdLAzsioHhr^pq{S z^;Nk=X$NQeWn<$vvKg4BGdEk>so7ww*+*_Tow_7?jV^*`ny=ai&jn3Tc(oW4< zzmQ8GL9=O(!^UBQ3p;b}F4_xLIdS>;(&$w!q*vdY&I1ghLGtGtFPc2p^lRX#~n znSd()ErIxq|3Dy4D;Qf-lIovzO()B-Si-D&JBG6WqIf)EbmIjibq`#D;9C=Rb3I<4 zv&)}~3FMoSHsr&AFzsSZT^p=`o#ixNErmk0peWDPh0 znCqDrND#)wvi)AP4|b#kE-SfJ?XoetS&E(wMgm)Jv8r=%U_M^!FTvjMN!H< zU>zxSrS)Kgv-SJ4fcV@3F{fvn*`k3szyH}07<%Bd5-x>4iNF1v%Jg>nu(a)?Fm@5J-~)7aFdhG zNPyv8)oS_zng-v=1*v4Aj}a7U-OV(Xv8bW*EKL~3mzPnN&uSDvBk?#Iv31=;TUh7` z;^Zn_g?|0HvWt{hJQ5L|ccgpZ5>0GW5AT}3B(x=P-WWZ-3%?cyFSG4lw(j~A)!aPq zNcZwDDQd+wZQw@Lj2N?WslzY#u9U*F21Du5X69`%np4sBN2E!=%eder1jyTpH|C~P zupDN2Z?0#$hD%xgw(f0aGqhjT_$!$zCElkjohlYcYnM}(jueYKtzXGrxuMFsTLWn{ z%Ev-7*l4U6bCiBBxe8V8*MbUUm1g0zJVuAG|K)t8xJLzO8usk&=yt|B0WY#&W1P?Ov6>>G@q~U zvF5YUXzc@|sLYoVIiJg%zb10F$($z>Id33GG#am5Cx5Sw4=Yg0^~?wM$jP~}Tbs%H z<9qMh6aU^{bc=m2Ad~?T6au)OIb&G-d(Z2JX>Bz2ujhdk*~9kM4&hIx8MO&NN{Sld@J zNS1px7Sbv3RJ}2JSlbzp2kkMui+qk1s>2w1VGMfa%$_T0m4BH{HaJ!N2+mf+9114x zD-uTYVB{EvwK#mSYBw^kr3eoWevuKa{?71Y6fP z$5=MB%^bnjjmt^VM;yEML*Rr3cLKvc;brSWU7C*D6|Y$IaK|ybqNX*N`!wB_@%c)n z8D9J~-PRLnuS`3T9wyVhksct^Sx9HgvZIh7xhfGgJ`Z<}t4e2Lkx(sPurUOXNm+1K& ze?wA!kxW;jet}HSL;8xO{0n7z3Gy?O((o#!>9+K1S18RV=qhCkq0WyoP4&N)=|#x@ zI4S=8N4W}ELZhIbS7`@AaS0i+mt;kl@^Dl+qxprRnu*o{fH8J_r~e$Zd^}HdBob-H@n-|HxW80 z)|2!1>GG6*btP?EEhn{lUxqfV8T-2F$~IFC)~3rX55-ij4y@IBG;1D1V$_5NIs^JM2L}*#`K)V{q;8z+BaivhzScZ@*`h4+Z9pCk$op!gYijVFEL?5^ zy<{W-!e@DMrv8$Zz+>>kSam(AT!Bgu>TEP-gdve=G|Cpn)Vl(cxSsjP&m^L|FRjgt z`=0{7`Z$i?C#RtgLhiu@^6d=BT?~mM_iLy|qtQDKyZlY#vJ*#5~H_>TbYMW_X6^CE`2A?*e?*`m=jLL0< zVL$kkz74moztHuf(Rk=W(pz9%e^PIu=OC<0On+mg1Y_JpFvhwqJqOO#jLpG083K(v z?68>n$9n_OJvEp5s;aqp#Jp>AmGX8qcrxXlEL9(6%DWN^Hl`@b=8%oFq7r>xZT0y@ zN}CBYfb8wRS)s6ppP|i)2bfczTI2&v!sMN}2pEV|Ly;nQ^>QT-s*})RF0uKpmUe!# z`ould+Y^55EnoHZnr{2n7MrKM9Xu_j;Q`W=V|;sg@+3XITkfMPQ%JeveXeJ|EVFR1 zn~d{hevRSwpRV+=`pP7wk6)@Q6yw)R`YA^97$VgiDJpn%O%*#jOkiY<2-vP3GW!KVdu zBjMu$x{_Sz(9?uv@ePq|I8}f?C$z+;OuqS+8pEOXQ?{}G%0CX;mA4Msl`RMD$_EGS z%D#hkW&c6Da^#?0u^qB2&O>%3`;c83aLBF`LiKZMQ4GZMQ4;wcC}dcDu5;-L5>|ZdX>d+m#pE?aC|d zcI98~cBQu6uDsW7S3YdFD|_1QiqURYer&fZN89a6+F`q*3`-d{EOpqhVZ+k!Cw-W0 z*sv~0b;X|y{ON{2-G}uUHmoO7cKqpuKMa2y_~XQ%bMWV9_|tn>=CEPsBGo5r*m=Xw zN9qFn>6<-l*sy;6bCCYu_V2=rE_PjV>1FN#mk%6t#o!^iS6-Dj)Y6WIK5wlS<~drp zFbn$cH;%t)f;14P0I9qS)Emp5X9Fsp@Ua1f3srH%#|A8{FcGL_z!C)2_OSs^z=F-k z2CPDGZ66!(Jc4Wc*nqWe`MW;LG|B1twVA;c3S4m9u?tVUh*UbyrYO-7%n|AVXXZS>6JD!9CAI;MNy1enVy0C^)kIMT~UnHGM$0^ zRj-hYFyxsB_st;}Y!Tr|%d?Q=T_qt8{G(6~n88GEOVIk)5)w!HCYgQ$JzOW#4&?tr zrdJ{Vs#tGRWp9)4q38r=xRfZ1B`P}gRsl!{|3TmOJRlh|orU~QWqK|0n`F8e`L+MB zzO7L925naAgvUC8w25*`I`y^?tsj<kY1B!y%VD z_HA%XPMze&68W8adjgQMBqW5fHG0Z)3Gx-0-i7>wYw7!Qk#DSRquukGhx~4bTzm0x zK34LY2Ttl_$`Mb&)oHYdl^!5=aMtTrJau06tiz6{Ihc>3OJguGP`A9@xx=L#~kZ zMbCO*j0^D3dSH?!QwVa2j=nWMTSL>b2tc;W^irfZ$@FrhH^}s}NWZj3PTg`3?1RH0 z*J`Vym@m`UeT8(JOn;B`w=#VY>D@2O zFVZ|y!y(sks~61!i?I^TQzm~Z0KCz7SvE|^{68bpJ&}G)rh6m(2bu1R^c)Mg&r=u< zxm?!j`#c;_eID3_mH0d*0A6R@AR7)s!y=g;igbZYUxV}&GVMe9LI7uuN{>4na%u9! zRC;ovtfbPDOMml$a!jM+r8d(iT8&ov?Jx}b-D~WnU&Gk-5>3-M0^u0yiL#P_CxiYv z=x-L_95&Xz)MkoZ#tZoAFrL9rtFa6}hOv~qS}l_37ZE9eQQ}ga!CuE zi(E@$?LiCRoJ5ub?NfWai_wTcBElgT9@Ah*8=F69SW`KO3U-7n2YI0J;n|$N*djtD zvK%CX;3J?JttiMqIOO88Tv89GwCShzpdR6nD_@p_P*D5aSpOg@AUm=g#DmJod0WT@ zm0E-omdzHqpjnI6j@wKK>Hq_%qh{#IR z$DFUZAoM3lAVTn6BP)Q`(6}Js$GXdGkR6&uB3^(CgA6RUEC(qfXrOk~eyuFW!;i3t z63!9PAGC+lEiAVz2Nk0B7Nv5ocHxl?>n$sQG!b09%wd^jHmDTAC0Yl#^pt}0WRXL> zz##Tk?7LtJK`lU_!XXzdD1=4K&>qUa)E=Y^>n+Pcy)bdlx(ek0@?}0K8I224d4daK zh;^3bpl$>gYP|&4qMli@92Ae*nzJbJ84`NIs={&AtIv$&2p|A zasff%ILmUPsm$SXR#0OL*8nAm5RuX-b7)QwS}d__3WOj+L|kb^76QOI6(ORt1aSsI zv`)8m3_*Aa;#6uW52M59EWt^Z?THYhH@f7Z_hPK7ECl_~?D`IeUy5hL6NEfM>wSepMG*cFk274!H8+7uN~j0!w7J58kCR552xp3E$;% zTQ98BTcf6?FL#08^D_5r!^_+c>?&gJk@ZE)J!X9obKm%U5p&=CL=kgOTUf;0FMCR`qhv}$HaX@F5l@5Cg<};CJ>Ath!SrUmo z^TtX{W`Mjzs^UGLfFuQ9jM$oiAEKtQW_J|t4@G&T1z)HY-0o(J&yk0G*spF}LGizU zBVY%Q&EbPu5P1i%wOqCw@ysbk6BJrvYEN;?7^Auv&nIw@$UWamHoxcOgN5>e zn(LX{H{f;UJ*WkLibuhniN`)eKM*xlv(8djPUXWGOy&9HiGW0HK1A}U z)jYSm*`iCyBh71a8#6bY5$TzKJfFOO8U+XBX2B||q7D|}WeBG?RTVcEs$wRW+u#=O zq$!hYxTrlvra<0?l4S~9*gjO_p5y?Pxoxl2L$%d@%M!@iUL%yjryb>bX4`rc9Mi-; ztVJPn+nz+#0h+5A8B>|No^-d2NB2ifUj1!XNVN4q!;NR2q200U8QL9huE*|h+=6pc zRO}NGm7JZ$luICUGm7^|O)ag%m?2x_)ntaOP3vPs zzn9Rv%R0-fI%Uaq8mv0sJdLr#e8~2|CFGjU%iQ(Gp6q^>+GKf!vGHkQFZ>nE{W%?L z1j_pDdQzKI#WsAA?D#$a)$ek_enCs?&<6gX4Lo23(cH@%+7$?1B6b-MW%t7jl|vh| z)wu0xnzkZ2$|6M-+kB#)&`+*)tO72ww}jyYw0B7VqRHs-J$B$`9^90nrFE#mlNptN zQt>)yxsl4-W^}x0d8(iY@13yEX&42s*-}ac8}s1z`5NrSf8=`RyRYLIG^oNb9&d@7 zP{LgS^g5@M>u-UwN`DH|`dIdl2=%9Dx-zk;Nr-xD3*IKG(1x4!+_URJXc;^r!5Sk` zYS!>zT{`y=;L2CIo>|$4+8Zu(35`@<@U}ELp$E3`ZLW&EEeL3t3+$EyyW9;I!{vee z{3TpGhV##-^>hZ0*jVTwoyBTR?2GxQWg(!)>Fn<9T+g)0(X_E|q{^nT`a7U7IK7bg zgiQcSXkSNjfwlMuZeFEedfs<5EomLGnVGK6tewF1e-f%qtK<66&Bg;y(KhPG^~^!% zEr-sn8q>Kg{4Q#ub*DMP`^Ze$ozdT_fN9#yW7D*n>zU)vmD6;hS>hw?1hcEd_OSo5QKUZ&Yx^!`cddm;zE?Q)?MPyx3S!Ps@rk`rA1l4B zf3flD3Mu{=*T2vw0DAI=M!n1{4Ir=8*suZ|J^*U{vrwbK_}hv$)5j*(f&WKo2dJ)f zyQ$1_MA_t%#zQOcoH4OY>@x0Mf#-xpG*vO@NKzDlVdJLJ9d0tU?()iJ-GqGIOMDjH zrn`-GxyD@?+?c%dN*9s1!%FEEm=h4z*zJed0?+`sFQ~wO$GOT7%n$M%y7k=UDnU|% zEA$XuxiM6_S_fPZ)Hr>v!f++rYG$5%mF@tQ$vDcm?^{W~up#~jmz~p4Qm210f6*H) zMz{i66UTrvQpdH28z#ZTi>ukNiM@bd`!j!9{fIsiz9iv^)X$IFyK~2q(3As zdhU_^pCkL<6Yu}lME{NQtAe#TQ<}efG1-B4As#et;`6@;)5V4DE^qv%0j|diNQ?U& zm_}6`frHu#F23X8rF3bBEehwIJ$Da}K$RzxWJ89Q;|a726b z%*kQ;6%_YzIkB9;MqowZwsE1Is!Vn>J*@{6f;PwPIG%ifv}Qsr-4!J`Cp`^zp5W-p z9jMiZ2u6dE7CvMK-=+X`ZOn1)!tCWrdGFwZGn7Ct=5C}w%nioi-{47pl$(p2;<1%2 zYn!xRV*kl#dLMO#TaIUmKh^Yk;9aD9-%ayBSRhGN|J95#+T@zCF#fI78)kl$E{+Hc;DIR(;fH+6+8vCI}L z3%+p2cE#jw#V|14s%U@*Omb$w=(DJq7irG!iq)-0tXXi+aEAu*q4C=n+9*168P~xZ zr&!K1fnX3i&{I7t!@J>q7`6GiJ~D+@MJfuoXO#QFJOrqp5aDl-7el4>muh%ImS6u} z4sO_u_)`NvJPdzE!{3{8tV8oO&l>C9@BvL%?9+PSJM_%HNnaS~Lc|c?g0H*MDx%n* z+c4_aKc$b#r`NaFh`r~Y$?gY-%0a2YO^IPdq@N!}X?;fx7jr07m z#wqRRZI_GGVElDtY`x$xE9`TX81qIRHra%BsC+=>%kTMtJ)8!vQDuYtt@vBifrsb^ z_o~7DIf%y?aJdo5b4Hx$0o|qx6r$Vu_1jbYVjI?;-T+iK=)nx0)`6hQ2=Q&098S_S zSFvAgqkxPA5&g$KoPIj$uneyb`82Uow<94I<658!Q)O!!HGQbyLZ=+IrjhG?7eX;) z;U8#~Z*x^7>tBc}x^D?MZgivzSoGXlK1I_*G)c6B8;r*?u;Zn?K^5;C>xLgTJyMPo z$V&oY#lPi;ch#i}#hg3Z4-QLIVJQ6YE^cBl!TbJznII!VvN)qowi>sNm0>!TrNghP z>M_|0grh60im)p9DAe?OQ!pWAe$Qd1&!=;41-^%$ffUVSu;5Fi1E;|q*HX*bT{R!L zvEl~W#belnh^mh^;cP%CECD7(r@`lu55f+ZKLJNa|(qV z)?Ds*O;Uz!O;r8FhpM{}(k}FjRF!6-Cy^k8ikR296IR6dX~f#03=6r9R*w#N(Oy{S``d+1LmcLa0UkD>S!XiFFGhD&K_8Z43s`u93H*4*}bf-+vC zBz)x^xAGH255eRNo~Jd%_s= zE=1u?I_N(ZCKecGdbGfQhZjea7tG0Fi>v5+o~3J9V!adi9HAi>W5K(y5bWtyi!Xpv zr`x>nCpr}Z4#*f~0DJhp!D;m36%Tg;FLOxxg&N?GPy_5Y)gT!zRRL>*DpItJ7X>V1 zt|r2Gd(y;wJUMY)_To=#)Y9tS=mJEAj|OqgF=h{kbZ{|{6=eS;UW8Phx1^Vb z;C(|CPN>Y89;9lJUvuHjYGclxK~&?y>uy7F;9RPJA#vf&r|6i-M=;{RCBZjIpsJMH zn7gjUPF3-KWP#vRHAcB&JD-BP$M76mwB)2|TH)I(aj-vt#jI#Fp5Q=p<@S~|zc^Hs z_Z96CN$Jcw%`?Z%7JYC65fL<3u`%-(Smj1z8vROF#KujlaQS@CczGl&w+7u)?+yURIqc&B=qGleA+UPTvz@Ant^TxnzX;Mo;?k+5ZM2qf9O9b~>oBQN zUMFrR?jMn-?GWirHSzyz(>D6kA|r$^lHQpE;?f^`Jk#>87`vbRAzonp`@hzoWWe$# z+31k|BrBvpNlQQN#+&eNfYq}&HXfdlp@pY9wD629EnK!&3s>x711i=-kn_Bc4d71{ z3BxD8IK{KnEcM7ZIVm5MLC3IYs7j;HJL zLOcZ`;5ZL2#48~@Mci<+)EH)5C(B6~Mca#@f;3Q}U^P5A%A5=E(Aqo*orKq*P0PDh;_QuM&CWgm3A;-(*tE0P;^8&uoy&osb2U6z zdcl!nu`0AY_MgCL8QHlt4-ZE3mfTaae`@xAVhw5KxSsj&T3Se>SE;3RPJ$j|>}OFE z^MiMG#GA5e86~pTWt#p7zFE`d0_mCG42R#jdU@FH@MwSE|$ky~nkfG^R6MEGIpx$_Q6n(`MYsBA9I7F_r39|=} zr{Ho!&q`Gzu=j8=gy{+!@ETF|D094yDfF=c<6MPNHfh+0<&X=O4mg zY&ItA{h%b>gmiR4Ke^r95=yeQB=-Iuxu@X(XVNa5W_W$362#)2)I{F?O6%D;d&Y2z z_foopjmtd#bM#oUow>ijB<%1pH;t)uFHRqu^eJ*-9749$=;9PaA&=ywjqxd@UH=pN zucS6s^`|x>E3qH~mz)ut{9JI4lZe@fhns6eRy~|c-uaFw!S&an1H$#p z+Lt7%Vqh(Rt}ea_YbakwKapr@*LN^2sW-B|jp9Br2H4iZNfh>;FwTE8jCglk&z$uV zy@?oad_&N0i~-^-=~H4~jxRdn#FuV~veHPDl~fx~R`$bgrmZbM3U4Og$%l?{vX{{@ zfSs{D&0)N$97)2=A%R(AbpZJ<-%H3xzmCn$88CM2qyAfqlsr4*Ea=PspFyurY=LCx zT~pU4||7F}LO_rq|`Ecs?$Jq&gGy_C?s^G-zTIHbdhGdWOUVJ9^=@8W;BX zX2aVs?&ohzC2b7n0&?Oi8hqh3P$J^t*P%OP{A~&3o~!9f&%+C#KLknSL~uWJqmIYH zeDm)KersEF8Mf}NRu*J+o1)7U?}jM^+9#PW5<}XyfcfI{YjH)9;Xaqrm0r`+@8P0e zt=?-hn*M}QNF5Y%OuW_DzY*5IjbfLP_P1kj=%0WveaZSudMRBm?WH&_?WIh)w3m{1 zSuf>Jm-bTrdTB3Z`=z}U19_3)ku(0aml&xn2DxPQVBYv@u zxud6Cj>_<%dgkw6NL-F=9r#}8uO(fM7WO`9GIs-W*BNhpblj9d#K{RLImEvW!H%Sz zsqvB#m-oTr z#>2zWu)&x!oZ_KDHnssQ805d;tc|K~DCQ(&ybx_-vF8}YRx6I*_=?|eeJ;YVebP!R z{=4Vp3}D4~wqgdFV=JzTZE@MNqYjIXeT64+Oh-h<(zprw`H68u`GD<4?y9A zB5Yl~Dtzx@b=5F_J)7_8qKPl@x@XpKv$6ayv>9OM$kXb0n!!y7C9290YypmURk02d zzpCf#Q6bc;QpikGFN^Bw#^zEbGd`z{b4YtwoT^rvkZ5v+U4A}OWAzJfdnBd&Qi{ISU<9Ku(HYV-I}>FWae??)wQAZ%uSj3el7URSSEOAhw8ji? z*rzM1xls+)r1M~nL-TxC`6Nk}Xk3$Ag?U@(bNu=>uLC86{kFtt*igkJLx3hZ^34by z{R(4GLaJv}4qN0Sd;hy!6}Zbm*N}D!Wbaq!A2x+N5}o4K$Si-s%TT8d6vu?HesMh% zUtW8TjL=oH4%!`IDXuo|PRC4Dx_}QZMno71q@@pK=0(J=aEK0HOLxk_td?+d6P+v7 zbGMrwD<9zGw9MlF*W|`6{4A3ke8` z6smTY_W(}&`&AMtip|YWACuJ|zlzY@UyhmNZyVu2}qqNFqeBCSF1unH9;7@{}E{M zztTDphTru%X!^w_3uQMNdnU`5%SCjlFOqKJ;AIaXhx5;oh;T2)_uT6+RxO%Jj^xPx z_D`=LGV|KGK7JM4O+%B>r{9xeOu7^=SQI{CyZf-|6DNTxa(ThMZnn4^ym<_G&DG?j z&=$kyD$5l()DP_@$zj|RT)mXT#a|=t9VC%XRir$_C)%6;3;QoPH%DRaqE*c8Uu&tF z6-A_;ncLrF>6#VoMNSzTP&6;f9R5}~1Y5!uH`5)ZzYkkM>i1Oylt3>o3M<%Y5(|jE8xLH$07$l!M5k6P0<#&%QVx%P`HvkUF$pIicZ_*y~ip{us zV%u?{WAj7iU0FpkZyXY-v3T<>okVVUTp3b7EA6UCO&e)sPPW}q1mpf8w$h>%%B-}t zCfON(dSV$ovJ8q}#H@dbc<8T$Vn@)(iR&Qz2l3FqX~%?hj)y*Z6Q)aGx~S-E@z5Vb z-)D}8o`{bV=*~qUN079h^Wt+5FCQw)^Uqw)1$R@)!gx#h@888+PnLJ0=hNED@o~Yk z{!KZBcRQ`UB`=LK#|U?nIj+mac7|x(3)woN?f`5$PVb0(#NDA@=Ajm1?#RNx&rn>5 z7&~+tsD+mV>w|*#XDH=ALr@)f6Lub7rpRJM&>F#!pJ-CEZCmpLTcdGdHt@AHx1F$_ z0}U>IC?1bFhr)!}-s~6OD~dCIlP6*)5jJy2H3ZP=gs=~+B!vB6D-sCX^F0vuFVZ_9 z?6)(3u?AKhmPN{uT7Z1cf>@|coks333?OZgH z&lW=4#tS(>*&jjZ-|u3e?Diy-4c8`Q2J8gte$(ZUsQcR5qsz!oW7U2Z!uyo;<4G~M z>T#t=^5ePT(m3|+Dh@PXn?T<3qQu-Xgt3LhWne%HkuS1dc}Q_sDxzBmU9u$fA`^e* z!F7Djv}BZyBU8bKToas~pN!6LGJwuC+~htm?(0L?JaBHjp-%~PqqD}GL(hO#D_7w1 zldFo4jBAI)Q7ZEth+))QI%CwV6@*d2o8nOuoJA5!y}J4gC{@-v15QOR5~Xg|JomcU zq6Y}2%7wwBAr=a#^{+0VR=F2&<-^_p$8PNwv5597Q0#g0WJGe>(erDu(Y;d$+16~^ zRtW9z^@c-Hj6cqeZ~i6L_9A&T;6;jS?%pNhKTeOYNq&5L+Fn*t7R@O~Tzm0avPhX&QO-KyEZs&2QK zp?o?E2=8&_pu?uux?dDA-$~87U)<68G<5$9orc$ckf#ARt)$a1=xv;a090A%mVpC< zDysNU6E*UN0oUnRz^aJs4xNE7%ePL3Wh8N{buzGQV1^{dt~bIL%9BBRMaaG56?JqE zp?$rGb~BE~$x3-NXur>|#W9E(&RGB0INO$-B(+H%{GJ=HKPaP-*m$s(*I@6H4nm>v z`SVa=?=VKpr^tIhtc9kl&Ak^>ky(JBMC82#d*pv1f|=rm?sp7I|;m!|*&(DPsc`$3_qR&a>&iMo!Ux#W(%O`mYb2rvF+< zi`ihjTKPZKe~p|)|8@SU`mgUK>%Y#I`mdezSvR;Lt5J!yt>+5k`}0O~WB5im{hK>}rDD7xoEu~NV1&!XLsC&8%ERNI5XBBvbZFtCC0zV?c;gAvG|MxE zH$B*q7C0vuX$f|u-qW2FO%4BThfG!6lmQh!(O^uzB~_`4l#k<8?E#)p=X~ceLcUG- zp$(_o=6!}8mTHO7u;=doY#F?_(T0nQ)ZTiPG#}@8ld?Qm4j1L^2Tuo&7h3r4e81?T ziVuM<;bnt_S+E%AqQM`&J4dY>1z#hk;md)HYO#FKheI8Q?bhfrg-tNM!TWlr1RR>E zQ^kiyPnV)JXG7gDyqqkur8G`_1Q7+~2IL20`uT@Vzc>N5u>=F=8j085>uT|tcdjHV z0Yhbys=-1QLNt3ybQyA%l2tuMk=f(%mB?96#`4I?P8qg>#A??;>o%c9Qx8E^5|-bQ zoxt*5@mcdZU4gYWbKS3yVuEG=;ZT@^JGdSu8H_#;Kg{W!#~g*Lm{VQC9DFTvdRH+= zVT3u=wamernA00!j>5gnsWveOZ)Hv|(yiQlxBO)bA}LrD=1Bbto-1`L3Jc+bER5R| z^edd+LSArF4qH5|3lKl}UrpST!}W?3sXYXtU$N>r$#htTYGNfgTXC*Wj7pC($IBEJ zQ;f{=i)k5tG1IMy>vOr@6E59i;v}{Dt5i+DhO*S^uT!;w`}}(E{ygkos10nMzQh}R zV5rhI0!EM5>FG{3aZ8jre+x(55AF?*U*!uIJ*$QN>ro>;2i$rSadpn3ddhNJ|J#N5 zmm|UKIMOMkCUX|;&D#R&f+8dAf8JX##uqqG6(f0F5$ybN=}*)&&|RyyU<`%P99hz- zu$71X5lt^zMFh6NIQnxi%z=xzNkrGbP|gQ^yIJQ?`v~*3$VC=;x4DXo^7aScf}y(- z_^qWsM2yH(@ak>M(Kl#CTN(>70h_oJZ%8|#Oc8{9fK7}bpeWMrC@bA4C&=fb@SQ<~ z%a$`h_NJv2Db`iNCf2mvl+>A2NlHK@GcZ7qaIHY4L20%s;rUz@B6Lm)8dD!CG<_uT>^x$TrCVu2q=G;%9%QXY4Tx20K zo^yRXFaUEFxtY@s9AS(^^aD{;hGQ#U0v=F<$J5!O=SWxWG00cF;=wGR=%>!CFY$?& zFsFV!;5x2Wf03$IA4pZr&DZPK!2h7)4IWD^zl@8Av0sA~WtT_%c=T;! zC7Zb@EFmqbDzp4Inz+6&X4)l2KtJ5!>*mIf)-BG0Qf*n3&&7yjovsm5r>m%Hf8e}= z`+b4lvKmJu0^%p3*`=m^^8XJkrUm!^`5B{I@1IT}d@OBOzvnp9H`0ZDC3dU$MUg1a z^3SX<@r(CyZTAoSC}{row`EaPd-HHOWmTngkB90d1)W#ZYKdNOlKOvs1TP*BF408!6A-wU z;IhxT_{i|($WZk%NIeg}4bh(hq8!N4q=^5?#c@Bg>uv!K^)eaG9@lgZnP3?HgGv8z zc?VuQ+>+{&I#O;?g&MV1oiA!ExL zpSa`YJeZ$aJ||e=NGq@4!8!RU_gu`y^@Yakg8}OLLLRIxVeVGrzXlUu)Ot_4m$^H* z7*!Z$&I)%dksC|oOCW>j|2{SeYGO{J=vIz%o_v2BRY)a}PgtY6?M8T(q*2qe1nx+9 znZ%_DFO|4Xc@GylaM`2FP~4E{&WVRiV$rzJ>8_Z!&A6$IWIln$IKZRQfJ*)eMd^E&;(bURL%xsF!K6Ui!{s6Uj2in^nVQ>}{e}@piHUlJi*| zSinixhf&JF+g=Be)$T;CysQ)8_}6dS7Th3dG1%f?@#$=E=FxALDKh?OY38K^p;xq# zx#6C21n|ETdPmpgBE>VJtn^p#`Q$975HpAaUW2bx!wMH8a@BAlK004U3LhcMllsO# z=)*>tBejh=>`T9027%Qj^@CSX!1^5cQgE;d?V8xAiS0f%Al)^c4Qa(o@E}?Dilqnv zO{zzZ?80xCDfeDAoeim(Wdo(|4oU;x1GBSf#wXWKXG1p4vU&euw)7%BM2!uqZ%He< zY72y&8GwE7m9h5QseO}=4cR!mF9n^q+NZx_LIJs?4)XG*mei}DLggrQ{CAtLO==!# zNxcdWu58`L;NIiGeaEZ!b?H&>W$UV|_oY`GseIaY-lNHD?NSz6E>(UVg;~_wT^Q_a zd?%iEt7lJ=&${wEU29FYE)v{(yn3&LKf!x!gr|cXsH!-8%$@Ec{omMkME-qM4D{cD zJGBe3k$OoiI^t`xA@%p9vk8$Jyh4btmnpL-vi+aGUZ&KXZhzU?9#is%-U;9kTMwA# zddE5NM|W53Z9>b4^NA2^gr9X~&^z5~mvWALTx*5gIj=qV2CVrsl;{qV92|Vhy6-uHZ;n3%#BQ$*gV$W{Dxp!z7ay`^gYRGp!3}x2j}2H&5=o~_?Gpe0S9c!i{vcwQGpQRi2>rh3mwSMKSpiry|&Y%``K%DB0R9A0rTC&w=i zptCYkT7XlTxW0m_-;yE)i$vYHXAjfwJR2{CgFf@iWf)gq<87eZUG~AA-v)|E4#&<4}#k&s`~1unXU3x+?2txoyu#8anLmIN9bY!uFLqt z0OGeU0l!tkg@1_{=bGvh_(0)b$jusjvS$xlbRn@^6oOzJhatwH)XZXXQpe9SpM%d6jW6nRBC`0Iy}zGJ+@ z%iPD1x+NpYUNOo_ubsCK^1JbF8D7HJ(34C?>=(9>Cy?h;%G20{YPcrc#oTqzr^f%= zg#V_;|67m$X3&3mu(B=#mL0fJltjt{nrNiA!zS!Tw+rHskr{XoAB%}AR`n|Q!qary zr`IK9I;*#mT(LPMvmn%YZY#t*@cV{6pOEW({dCl9h6f!UJeg5$Q%#>M!y9~)Jhow* zW*@&8n#&Jlc$vG_%iM>&%-sMjM$qy}QT&18WlfZownbU#)!dVW9tRHeUP#+#?6l*o1ay`ZoQlAL4|<_^r`j zW!?u@iuN0~gP4|9t7b!#l`Mda7%I$CR-EpNvXXgL9{u7~Ja{sLJv`>5X=*9&kijc+ z*uUQcp;P;GFB@|39vhnwY3U1hKKo|bA?g1DrS7^G2Pm+YO{_)cdwXzV?{bwv<5*>v z?}?2m`<T&~$C`a=0_fN*=c=(XTvxIEz5|JA+Uul@>~34jrWIxjHU0?(P1xA0VnLgUXy= z@BNS##sT*Hz!trA6#P}CtD-2cT@^l;LoM*RGVc9djKSbyvO6#`F3GePJw%TQcYcJO z?k`SyNci$OJR~fZPw)O>>8IX&3~WkOByc%o;l)_R85Sc_AsLazBc|DMZVd0gd=AY6heTjX~cQ#rR0j=qtR4U#xzE6eX_#*O=i$`m4bv_7&!20+g83I@2V{XYO9rluh z2=X!TfsluR!}2lrvlc_;mOP%+hLuehxg;Ox4v{7%Da4b$#%shpb{01s8-2(GX_Qax zUbbSh7fyQQkqMc@7_R&CJ)q ztIRohcmmE<^^y$4nbky^zbXP@A-TqR3DVGDO$M~UztZ4F0Ez{P(6%|%(37j8gjuJ?nrWZz8Y4)30(C{z4vXY%tHmGU~DUTNND4PV?B^g9DQJEvkoHub*(BOG^R2jTXksGVYv~Gnr^5FNm zF^Sa|?@Ni*xd`nI|9CNpm0#@A#JgO4EPbXcS=)sBSFDlYWePVJl6kfUh7F`8(psa2Dgt&0?~b-TT6-PWDP&hLVIQ-WWlr0wW|l8rl!v>m~{DcZD+ z{0Xf`B=|2WY1AMsgQD+{)_Vt${0d#xvmr;&Wp#YWXY4Yv(+KWOsotB$pHO>5TGCVz zIaTBotj)bSam28hv*4d=Di^jP?O!WAj|BK7F*|H=^b{+ii|(bz|DE?pD(&XF?VTD> z>A!c@yc)3=3LjgI?!P@@Rz(68T(|wTb{Tj~w}kM=dsZsm4F@thX)N~Ki&)E~?CR4; zxQ*3Qp&C#BhmZwt^Xp%HY4wX>Ka05-nNOMuJL`NdAL1oJ=Q|(g7Uj9d^#gF`G*<~Q z&F@R0!m?Z%F9d6+l4=DVeMqkyNMufC6m!8JM`Kzyb*j@BvgN zUQEUSs96RX#SEZ2!s%?tk$Y^+{Ygt2bAJkVf)5?XwGEte^>j95^Q>-^Kl$U9^eCJBc}y}o zVN3a~z$4deU#7_TNPEp63VE1w@{zbR%1T#Ap0AWVWJX!(pC#9b2jz+N(`mOmxf@#% zmaG$NqRh#2*+e)A<@wD$$waCp%1W=;)dWPgDauN#B!3qJG1&fA6A*%v^ZSd-uV?N} z%>6->mA-VQp24xlTjHoDcfP4}=a0ynt^Ki|k?QslSSh|wf&pt%xk0T_6XF8KGt;GhFSCxznXQ1k9ZHUyv0^tHa+;=Ytob93aNNSn8h1rH20QcrrAV4+_QKo96npy%CS*#@K_xu^%j& zQPqlv1aX85HOCJN(4u*o_<|k=j1ND;mCdpRg!z6$28QsV3jMIFn=Kxmp(s$FhLzx|-tx_23H`q5n%5h5*8w3{nM^El zP3;ZEkoORn<=XlhOIfQ}mM(V{%EYs-+}={5D?4}FGGebXFaEvcvo7hrjasdC<;cpf zxg5PEuRUzfIrO-;pWYS}EBD$L9$29Ox%ce~6}7QBny4YIUP%0t^u4|~jJYRENU~q; zAsWJ(E4O(sq&%XQ>;6@w_x1mp#upbmgI}a*`ZUYJ*BksQ1?qxl(FEh7YfK4D6=QMS zHMV9SXKRkC)nD1Pw7tCgTN~U5SMBh#qW5?h&;AGKQK4!JTYT6CW#}q|!r)aq0zLiE zSsr*uH5$Qhc2aXqd;%k zrSC>rNfW&6<|CZX$MG7FWADY6Xvrzk(v6a`jCylOXF3=b@-7@fn-dd*`z_^UB` zdN1l$YP~_*BZoRBpAWJ-sBq-O`-^vVt}LLwlDdK7A->~OfSWN`2=31gnySR%UyuYp zUUHU6>(m)Vf;(-}lD@*4)_70n$9hUCusVW>{5vVNc0wZZ{w%1f)wHDJR)fNpA~s=5 zn-7;6ay>jXsq&{um1|J>d%UNkas-uqt{F*{ze=iH%O;p@@DGiM1Z7y)%hCKmQuTvL z)i-zAP|%Z`3LIb@-2>d|&*i~usueC;nLdX&$p=^c3vW;Hikhe~=0s6ftBWbrZH4JX z)$X~UV5GRH9f856DjKJIS?>t6BBRVGM)8qfS#Vgoc>*!=xTh~3Q4*@my05Y zRN&a8+6_2JaiE1TM$Cz;i0E+I?R}8!NGm`XzjF!19<* zHc#{7{muzh#VSO@fuaqof)%7+OenNYq&9PF2^ZI8_{HYvND8R|md|g&P}AxOgg}|* z%;n;`EHw=`vMtE(N%=l!J{Q-yWqw4~555K5qXha9KFN}xITzQF!d)CJ7vtxFWym+4 zKGtr6&{!r3%t!c{&#Wm?(?%B-{1e~;V0Ag4?q!3w-Jcq`2>wx6sjXKx=!G;fHy&;Z z!DbVeUXt6=JIWkLJ4(Thh&|9KaGYNBjXN3@7Jd;S7{eZL^@vz5PaSlAOA z>6|E=^dl5Y0>8+zvQ^7k;y0?8;#T9i&okf5bGo%Cm;zYIS6u4symHHm_P^+*xz+OYtJDew6_2If8Tpu|L5gJX7;ST z_S)TQsKAEX2hwmkgFb515behx?#4k;FlqsfC;1%*sO^ckfCrX8cMu zYP=bbrn0iD$Rt*@wADhVwRivk0eC@tjg;$nEJPqkQEJ8<2P@km5nP+-93?{)j#)BP z;oyZW3#UCn!u4CK`|@L@OW58ziJMV2s{3IY%mP3u%LX+cn;bSZgr zqBbp(mm!4O5Ijekx08#L8-T=;QmDRRDyrTG?`+@nV9P|3H(l!`uD@P?h1&H2a%XX$ zVO=&s=S%=CsZc?S95s*tI+oW+CRFqnzcLI{(DxN5 z$FWk7EfCfC29TNRFQQ4NP66@lK?42NM^#k)*z|V81r^8Y+d|g4fDb-O{i`fWH!%M7 zDzXG6R+M99oY7Bl(7w!0%-gtH(Pt(R2h0egKiPaz)*c7F6mj!yfc*`rP#i}HZ$6ie zJOur>5&CblTy9`#sDj?x9AdMZNblVeVo6r+(*eOc#f^p{N@FsLYXZ5nm}3_gm0awd zyDG$TvO2jh=)?!`{$$nTpY8Z(AO1Ole{}pqaQWsCv$;A$%+`*R0eW@dZcHWeJF#6Qkf$t)7GO5E+ok^+-PS02atl5 z<(&_)oDYDr53wZrOFF0-QIZA4CI^a5KKE^QLcS-{$6YgAGx)Nv5C<6{O#gciv(G&b zlGb(bfvDN1{yms|Ug>VYnc4(kVhtqTt$I`T1+wP6h0Jnp4O(#{5BQK^P2V}K-SB0^ zvC=0fCJjeDDtqFSI)|+02fRhusW1szumpb54Ru2}u{m{OP~o?&!|WRLN#`5DURp6lrra z#~wFxH0jgy4g<+J+CXkW$*SDUHX=1)jl#$M!okYF5Ab>5b>fFXAT1CP2r>a_gqsb| zvlk$0WLWb@)cObP`MCea`oCA;*An|E{5t-fk5)(VKprtQm8i2hXfD7m8eui~kK-K% z7hol0r7H*`bXTg^zmt{!jK25)(e#Mbge`sxU@n&^$o7hSt5*~Z@rq)HM@)4BXsi-) zS5cIub65F0iU`HfPbIj!&9Xc_=mKK!iguti@bR$(Rn)X|c1t}^sP|p46#c;ED|Ra+ zAlK22Bp@$mGY$T5We$lzlbFqI<&YaMAh~7@MR5EEKf9PC2vpGomg}~{l-&$lwToqM zo6ANvVS&3@&JI|&@S%QT0&|?CyZ?kcA}{=HsakkEbXf(`bGRCkDkAAu|k@)CR%ymRr)9rcwlldubVs%rMZ|>%#F$U z+?YO(YXY@^@dtl-V0tn3m+~p7FWnP(AMeToZ^5$?37-@55z<)*A52Lk)kfsaG7zX%?q#L@Yb zKTCy_dItp9K{wNt+?2ueH>VPmf;dI)sg4l?E)<_Om;(spiKu4G@j1U%be%5Z(42^x z#vhr3x^ph-&GbW|ou0T+UagY{7FE1$TbSQL#JK{Ba9Ladr-h4U6i60u+PH9yN^bzJ z8cYvrfII2c!1Eye)JaYUj0U(84qIAI*z8f^-^aSfsiOfcbje{0Uw6v93$T*A0^F(w zoZK}|br*gMln<^tCvwXI7B9ocTrA1S)d0^@13c9=PNl#wm+a_pjahh~==j0n@DIk{ zdwX%8G}gj>0?!GS$D@9nXQkQR$CBEo7Q0sK7*J+kuzS)K$gDfHo*Zj}7$V#2D?!Q(OSNBmu zHU5}`W~2~yqbc;}fBsCq`ENh_257C|ua;JDX65F^Ktz{(}!Kx*uS|#BV_id?$dI zpV#B#9_FYIvAn$@me(|wjogAGU5e-7rO%_ihG{VGFObk0m}4J7uyat381!JKR6dW7uj9k-G>n@q=G zq9BR#HTmHM`zng+PfXfxTDnW^1yQyNuW0cEJob5jxH&yYW_dD}r@}Lf7VB?wqhj;3 zzk}F(d%tepm*i@h_bc&(-Ixk}y~anEwG}zHL>< z%^u6jL5;ael`)JRPD?y1#i6Q-g-)ahA+ic&yveBJYG%af6es6Kl}La?hf^x)7U97Z`w`FgJOwbwnDJ{7oB#;F;bUw1HYd z4SJ>a-)_*TNQ3O(v_X`%y_X(xL>tua-*3>^NQ2zpv_T|D_tK!3s1?*h#WnwS4{;FU z`Koi&j7P?@vbVs|e?W$JtKwr-G;z_2Rg{G^0HgG@109CyTjEf-I8V+R{FcMY@0GFg z751fIJ%QHq@t;Fr`Wx=oX&?ZqxELqIbn3sb2qaR-Q-3 z5~4>GUb|a7Xc3vozN7KJBk?ZZvG{<;?iSwB0k?g$??t?sd2Ft>xB3LXq{AZHl2u{5m9~XU)e0=&&)m7ZKZUABsG=#x(y%WHly43${lV` zh~+h7hr>!~6K?xxbG4krYQg42DR|hdT7>)l6?&X$+8y$5w&X>6JhkNU>dUs|AGX3* zVs|T%hB*Gsh75`}kV6P9L=y&%TU{L(_$nN2Lc2MTdD7azMMnw}dqAHetk(myiTxId@* z5#>7;nl++)Rf_Wc=)4)_i#>(-|Mqtn5)`<3Js7#hxLzZiL+zb(>W;j#yNC=AbfG;} zf8zrJ8Hr|s7^%0m8&WK;>r1S?fyt@sT?t+2Hs z6&a-?%c$pULM2h1^abKCFgaQO7(vHc;uW$TZ`{!hssN`invwbe6y+%5!j{o)h-w(E z>2L?nA-!iA$s4dN|8ca;qzj=%758vt@ZOFL-a%yWez$w-N)mj!o0?P2a8^P!61)kR zCfNGGyRhWD*txe`Z{+d20-D)w0x=G zBQd0u^Y8|#63-=*PPU-0M|}V@vdOEl0XK_w<~|7sqQ7Iw_c6tsTzkR_e&MUl7jM+x zr5CTWa-*r}OAnR=7>q%8mg0h%S^yXtw z3B!3Wd1U_2^xsq8r2j@-_#fVXA!dsUFDxGD zG-(++kLW(j%~-+$FYUs=_e6D{U%m|8XHNfay3dfmv>U4EgLlgLtD?k#yT7nM{W zaxE8azKhtU2(PM`ZRP$0NE1;jDWUuwg;&g7#Sv6)RKxjp%H>;<99P(n`_9KNOyI^= zvmHgal1Nv~7CfGE+Mr#27ZYuK+(hfbK_;`` zNsFSiUcm+7_v)Oem%$t}GsA`FQ9;|RKiR%vk=e%pC zYsPwQLqszMtlyjyUd)Lw)pU4H%*RV>DZezsOo1L=_7dLxK=(OeS%=Z@3+GC{jbM4>35kW3yTDgB`(G98y z5&3} z&qSuDrPQf7-{S`0P;QKHo$Z)QTxYd3<=(ch$5|d&XD_BReJk8VFeAWCG!NZ*!)<4g z-$`mwPH{TSueAaph{PwSuibVLzBMlPs)*-3qF)h&^wtK=VKg~?s4#^tH|xu`T{QT( zwZzdJoqdBQs3fO7{%a|x#l}3In2$J=2V%$*DR=8;F7`+;fInDxZEGSGL66;j+gSsF zvD9hIpJgD54GBK=B6wLPKbSAv{;m3nt<-*520Vt}d(UitVX;RRH1lTEY`ti3-v>kr zQ0(8eAinB=gUq1~==E@5ac> z@qqV54v`!(lU5o-1V0WY8^}+?;VVPa$k&er;ktLuJu&AeCA~IxW=LV9NazwLNbK^6 zEzGTRv7h^oL;ir1LR&!c$5p1Vu+@}5YOUO8jL08_cBhtUg(;n!xuXDQT80yWEw6<9 zA%h6Gx%c;wKep<}PlwOX=KnGB$JD6&F{fJfZGb$fEVOWABJpa;G=9uBF^A67#1KoG zniG*&OtCNWpYyI6Gs&)p0n)D>9^Rs|Ya&||adL|ZwoG_(KS4r?z!N!q+yv{wC0tC+ zcWE=N`iz^g{a`NupUssXQJ5n|DcnZw3Z%uMXse$F$&uk^RN+USh*f;avX(U zU=#SIxtOj9A2w{o&q#(ao9d8F#R8#TPT!`V|1K>M3KPmIc4!&c#yp6cE~uf0wBr`O*B zs$(3l`mj#JXu<6Bh`zGp0)_T0ebNDR9a-c&kbfis>D7>9+#AfU`vDg(%7BAORvw6_cI`oj#lK~iu;JV0ADs$ie|?8VnuDZ%7ZTFEI?mwE=#&ZUs{HzY$gg zsCJk}y4?tERnMdw;d1O&AXR_+pWHZ*ZbThDZba&!^{B7~Mh;JJO{OPry@)3F^5h>} z{>k*N&(V#&yz5zdUa#*;H|ElflukFcGg5T`E`b_VT7FEzPA|QTU-coEtKiAYKN&Bm zAHINh?WMCO{gWGiM>qD;NrTX2RM_%I8iHP$OizCBa!=kyZ`x~T(YxM4H}=w5&;OGf z+q*6^6=%gM%6eI$2XSj)sy7kqW8*Rg#l@~qaey%ta-Rrh$4 zQS?JEGyH1uC-l0rbFrBRa%?uY_)2+A}iAYF=f*y+;5lDFk1RkL}zgTM+;(0T0xzG-m^#jPfX@i0! zF_v8O!7k;Z1sh_vZ2Kt0ONW^4r=1k|*9d5IXNcv3j%Pc?3j*$#>%{jX{+)#^#B%2$ zV&OE!Sl}VUqjwGov0R?o<5oxPt)sf#`crH4UZ7Ao5TCJ+<+1l>b-&jZy*CH<=J&XF zUhKUE-R~U|y|*~Ta#zAB+x>PTc{FPn9Add|N(*Ytd;c^wQpr+jM$KJmTK!^PVX0~F zL+4RF5-k~9k0V+Sz`AG;p~Sj%#ZuTaW7`ABRri+~6|Dz|Hq?U&(xV=rH)HFOi8jLR z0f3e#!s4zP_00d-1%qhW2EF{^Y5;3S{Psn-{S8V%JMtVrzxAzGLf_c|(xJxIzA{1- zSda5=HfukCZF%-lF$MQ`D+p{rmz&Mnfr8ogu`vaYb}P8ejW}zH?Qr^c7Tz$IjlB3c zJ(&oTYVc%4z}AMte>j3LMnNp`{t<$b&IO^LVamr?a^J1G!Zd6_T%;2dayb73-AU1V zTlHWNH^G-kjMDQ<%@4kn5ERY0{(%&;!IIuzMZ$zY zAg4$8D9Teyaa&~e+HHN{31g*&=L~}z^sCEf#21cm`3y_pwJx90r;xdPhPCJhZuqd_ zw_d{yAI^zZ8#e@f=*ta(pUC{|(JIUg825}-#bZtvb3E48!*P_!9QV8y>phAXrF+Sb zrG7%z>%?)NR7CS*ZF;Wv{8-FU&qfaVR z4@wA`g^Q;pyJV2qCC9}VS$&I$PBIu+j-!a$4ErSH`2uNqiT6nUfj1T{+eoHQ*o)4`AzQ$v+JtQ;8`$zF$Sdbg422;6y1`c6u(*ey}P@DIbd^CGKDoN8flfM#s-jJrRT zm7j!|aGf){zeyZA7be~j`84~|L}lQBny~C7% zr7orpE+!Jh^J)I@)Ui3ZjU~C`9MKX(dM`05TEfwLiLu<6IMyuX9+#h8I2fB9cEKs^ zW=kCq8q2v{uBuVV!8(^QHIIcfTugO(v_bdnF$~xG9L(W2 zVAc{-$8Mx=zrPw&n3VIG82W~x82U+r5F6+-&DUc_(}cb@JvyPA7Dc8n@TFT9nfC06 z{W>X&?AOh(UyF%Ouh{Js2N8{&)CVajSkg2bql^)gQW<58m^O;poKBVm$`~656n$Ej zXWac`mn`y#TCdoKdBMe9PF2*a2|M(YdkiG}buwGLYE*e2uFCNw)Pg~o*{0aQpKN2c z38_HVrXsN$u8cyOHeA6IreqP47c3x7)u>i|l{q1m-QtOB^8}KcJsJ0mEqNAwr)m@8 zcwpjK{oQW^E&iBO+Mne@nE#jV3jvx3)&Kw;GWMd^HE`obtO2A*FG_TYQ>_mp0W$aR zTylp;2pM?sJa+a>;mSt7flPmp`4LFS9JQ2ZFp^Cc;e5#=XdbtgI+b93eK|r@)CSNq82#IEP!|O z5t4v?2-a`xOOO+=PeCYv>_F+eK?WeVGub!Y-AgI3MnjHVsp#Q zMoh}mXnw@!t_<5^>(_R-#rigoou6U}I)OkpQ%H^H+A^BIVv9#hto2`Nr@Sp2cFKs& z|FZcJ7vkCfXYwP);PwAO{zHmN8nhTi9ja2_i6&|yl{Ito1fW>0{p@&LEqZDvGA!uCi;^x`+6Qvb@$9960~ z$sA{U;Bz;Pq>Zr=f221r@#GU|BvPrxeSv-@+t3g4-nt z^c4f8)jmHC>W^*Ak#!W`RYt@Xnaok|X4!*wt*an*zLRW4;{YtcS~Evoy}t6x5H>~z zuHKT3v`i&G`d`sdR+4Hu+2N1gsgZWnex5~Iu% z-v#;t8zxzl&teWL`fx)C=brv&{EgV$Cx0(`3{8Fv%R0qlUcxMKK869<6`dtbkuzzr zO5NcjNBP_KmGoL~+hK>L;6KDoQT8Q-Wf3hnwmhN*hw?d1vs{Qwe&Ps+=0o%y&~f$K zu4*^Z4RM0P`cAG`tsq5tIno8wm1mxnknAxFpOhf&@niHgidTEoh@9sT2-6z5mfVQv z==U;tHU})N6sOmhkgGMBY~}&}GEb}GJ32k$h(~m)XAXMBDNn``_6)RdZ^oDG8JG-J zQJcwT9#h3Zm94Es4C4`~z$c-+Hnk$ZM1AD@9{RpL^8F%x@08#BAc(Qml8Hf=nC&JA z9N>*Y@&cf^b2f+A>`E7#S)PBr5& zD@RPQYSel&&am?F=uKf{5CFLO5Lrm{7Tc}<{*I%GY@w<~^Jl*zr`qV$dI3{Pd3^zr;IJvLb zK@qBCxhwxsUpYl?>{=*iM&f`5Iah}L#=lzT3fqAX;D7e7RtR={9D&%Plpg98bs!aT z+Z~kM1ks*?r$&Q4*S+5XSs%ML1)q|tYu+2V%?TO5+ihz$bQt(K3u)#{^YK7vmow?f z#7=ma`-)SES|8^#qcmb07qsbuHrcdb2*{h$#O zMBi{RZnZ7?3cAg1T*9;UhyIMc32C(R=~F3}-%d<6T- zDRW=JPP6Bco%8Mj(jXdo%NAl?= zzC-uGty?SCw%EmYbn>+A-N%W}jK95yS+yNu#Dt>6piD+W8trcBDm=`0w5V+Di)0>P zYj@Badqe==J%KV3+PvV^sihr-5?6V|?;(1sTJm#1K<2}&6ezJ5$LeF#?zb!6gkuwY zB}XjEWKr@r3oG?PP(>b6H-dya>f)Fm;-e2a%^4Ely4lEq%b9Ng1!}wPIjYz~xfhak zHuJcvqt3$oW6<|VLE1&q)rm zc&e8}Eazr5p`QDyVBmd7Cp|BB0z&a0!luzirPKsO+CS83{)%w<$PebVZiUTjohZkR z`l1&+8BL3S5N?yGMRU}&%18^iuga<>TyooC3Imq;+T6$&AqT@FUZA0*j)cn195s45 zSCpy3{WmLyFN@7Q9%8w*AvQ~IXGym#ld6@!W64%7z7EfS>a6QYrKZ96nq#ZY?#dM0 ztyZ?iQvx%idWv={!0}3^pJM7_La&#B&4$gYH@gY>b#l%3=ueT>oDFul`WORL)ywAYz?yBng{QmpqW+E4*eEDLNU zWYN_|KSeUSSvFu^&d5z=WwXu!Qzg$ksBu!At1#8O@DaCFuUcoq`oE0A`sH1PUay$u zfahIHIcWbi5c;MQ2zBW%Ka69m&_2%}q@%FN;TB&8HqkcRIuvb$CK=f&U%nSAg~&-Tnt0)J^)(KR`ck)RXBu?f+}B|08({`T6}FORnZ( z;CcN|18`{6;m|nW#xpLKwBX#R7|?EH`i~V2;G$6HoUlW0i9G7uIq zFpwwFcaSfMXhw>Yju%V;(-98nml8GJ84@-k_#v1B2Ls`sV(v%Lg-v#3ZKgAL%oX^ppAwsWCtVNWPI$Q;k`>z*J)%IbfonbzvvPD{WmHZsH~SOENCe`Sk}%unzs@HTrZJ{pGP? zw2_a-A5(uBdLQkkJ^3m_6M9<(~&BCLHL18rm!JeB1fO`|QE#jy6codG| z)|<$u<3X~Tt!_~zZGX8p;91RF?9-bD<6||9m*@$^OKj~JD)mS78PrBxU$z-tI%oDh zm*js%eqfK-BA*j*+f&`5NPD5vu&pUnS9|i1^Vbr@{lwpOP|%K7#JeOpJ!kflT;81w_B(x|bn1FfL%u&{VxE`NbCgEx_Jb`?a+ z!0Qx|59axLOz{)va8nZ^@s6Df8LkiUb}~9IY}s`O=G&e6RWD*UfM?!(1`Nu2+b=te zOi6K{L%CSI4eaObCYb@M5#=<|JFEO`K1LmUhXSl z7DZ(DwXo8=EsEmb$x5eL6s4moj`=gmuzbrqFct#PvyDPh-X=4RKJ`2_+BvD*R~@hV zo^&Xz+(M=d#DALRu9$qKlF+^ueu$pQaFbT!B?%K@%}hVu@@umAPEX}Vb!Pej)pyoX za-UZa5wuskqf6DY?N+t&?^2A?l3!7cs%hHLU!s+2!U0oWpCByn!4$0BX$wry&2NDT zUqwE(MLwNUjV(pZ-i-Z=?dD^qXvy!vs_RYLDiGDHCTw>F+!bA_(NOd?`Lk-(jK>|U z>?YFnKoSU=VR9IeHEJE1bO{FqW7Ku$LhzPrBRYO~5-vYChGeos_DN}4!6$DkT)dE$ zg};G9`&bVca#Yb==e9d&YG8rt{V0^Md+~5JF}I!B$IpCn$<5msEL8u}%?4hMp8O2^ z7aAPBEr$WZT5aXN^Qo+?KcPM7BE1Qx!_Q$>m#|b&1>0%nH5DB*69akd zIr^AaI}A50peEV4o4GMTY4-q_EHK~B)r?0Stn4k~A1$;OtGlZ}*~ z-VC{6mE{6}3)c_;MA+OA)0O{%l!0>SZy9Z@`c&Fz%jB+mTSv%ni50N_0)Yg&lT80{ zSYWZg1_;Fj)9qHh@MU>Qi0alkI3=ujfN>fZx9T%rhBa=5>G^y1is*6Oawl2iz6N&L zJg+~y6Nl4a?1|FdishLKYpj0VaGWrB1)Lw)3vj>yBSq(kD5K*Lr}T{{hT>EP4-4Tu zBajrr<51`?7iZHCXjA*@FQ@mK4`=5!=L{a359jA7cWFMHbEiT^r23xmYj{#t1ng31 zcdDZ8QW5G^yuOyA4~!ns19Q*|?{`nx^-Lj=bq_i*7YUqd_1nk5F1jbZfeT%)>Jt%> zrn@#E*eMDxyiGn}h4}z58a#SOL@a_0bUwbKzayRfr|;5nJ}Az_BDu8*^Yjl-K`6^K zaJszA1CLsH;87baZd&qj91L)%1||<7iXNE;Y;wNdc|2tBz+?xu5CXqG-Y;HpZK$;< zN=pvy?31nOJ2_iB*#@5Xn`HhgMQQs8d@qw7+^FIK&-PAAA4sJ#wwHW?Z(tw1dFG}3 z&{bSaw;}w1(sKD57Fj|pXA2k89b8nwS;b$5;}fpl5X(z^aAw=ef?&XSny82`XsGww#{P$z<}HV_L38(y&9&4#Zk zHi#!_rz+0UWN3+%*M2jACc}aL(aB)Uz+@QIJs;Ha1?_O~Z^1aGQGQDfoe@#dY!)Eyz49wB|(qa_y89Wk1ANm$4JwIfEy zUZ&u!iC-lqi2OV9aUSz=*fB;=#p4RGv6yG}_ohY;ljs5R^Xsv1^sZx{CdHa`?1vJ} zZ8fT6|K!VmsAES@Tkua4f3_+RmT0q7se&R86O$8(AA2A!fVFDf`6h{O4B31ute!C1` z0lL!oLMp954_!%afeKnE=?9=36Dye+u_;=?#t$%KJH>IXqn!&|4bQxb#u_ECh5Os`y{uPgCBcXihghwTe`lD2gaIF8!MP~gMw0t$KzKTN#)*<=iS%BQ z?SlZHn(UzFJLDT-AxU7n?2x%E*+3qoxh%PX`UAbheTHR$3V5?<<}dp`OW+Arz9R`Z zeA4QccSSZ5kG+5|+l-?t8s4>yLd0UG=s)GdXZQBThktoK`}?c7 zcowiUo)GkvR9PZ4^zJHayNlT@OJklM2gy00>4w}5^;s3b! z*ZA>c)-y7`EysFpXSpfc-l&jl?pV+5EH`n$n{;8|@^+Rx=r{Ch&h~bevxCiwUD8o} zKkB%N3hk-Um~h`$&WKb8mO+rAfS4jylzTOfwhSBo zkS?Poj`m>hT-@FC_FwbBgknaXiA@9^gqDMY1^n54`_N`K;?ds_>-d=KXe;u@n+7c{ zSt9{VRC*FV^CX;u6|jJ_wbeYK&ZCX?<3}OwXw$W!HxUf*<9Os7`Bc?@L9}xbd^BaF z+~p6laxYFu-vtXRYlRr5Wp=4zwa`Sv%RR2BHAZ*$igz1(3o&M&`fxc4o68xm!EJ!@Ah415~m)6kGCBs>_19kO;0C zAzpEpuauh=+Op%VRITMQW$|3@3)-kqC&e~H4uZB{z%_5YC!>*RuM)yXzcM9;9Txcp~ifcb?r69(2#F~8r8 z49WLl7Sp_4UK}t@nB|o%@igXJG3-X=w8#ppo2m`HITo*r*^sSVGC<~pzp@?S)m>~> z5Gk-0%K7hNwxKkC!VAC_J7DIWgR%X@$s4Qb#!qo$w$gq4;xC>)O{Mlbakx=ypKR@1i7_{R0V zR_G1mdwY}xkyLJlhWo>omm=dd{NEU-%Z!gX$GVNrcIxIm|73j3J7dRZAKiH9pN&uK zGsEK(e&#<73`?`SDpi$NR62P3+s5W7GXH-NuF|AOb|ojQ1qy=4w>24qxgr z4A@0Rc{Jn?q`>xvovL_@UlPOaM6QP!uDiMRwmtuA!&v{?U`5gU9Ej*j1%st-pO55y zBJq~TOWW4xcnSNzO6VbBi}$t_Ldt5G3ZxfqR77Y zV=}M}`|Dk+mGmHUAah;&f~!L;uNqlR9vc)kO({#cs0?}7Ep6NgGRIy77l>x&X!0bq zc>+bR=`RpjrB0%MMPC>xCp);9X~w2;(F|wRD!dcL8zdG*FrAcam;qCpT1tkO8FYIz z{H))5@CY^fgGI^u1)sz_p7v4En~|0&P+|YoU_}9Y-X2&_Rt{DaNue4jvCq?Q{spYQ zd&td1P|ke4FD?a2>{*afoa(s64p#o#K9oLZ{9V5`^^dHGUse|D?B$|+v=O&uiv_x6{b-Qh_32=P!44GTrwkzh95f92M>+EewvdoyN^2#Rr zkt9X&A7G__CJr5sJ(86GJr|R1?arqp9IXImMypF4Zdn5Vpl@-i;uT-A@iUd?j5Cy=?S)fWCVRZIRZ6(t&H;j!m?;g8Od za{kBo_ko)2u*ZFce?G-OU$j$(>6}(5EV7Oe%lV4#g;Y#W2(i2x)JV~Ph@GJ)MxQ0s z9eMZv-aFZ>Dl{(KFv@Sa>!M+JGd^M3Q?yE`*QRL}IXlyK#daWuh+$6Y~E0N9l(845U%UtPZNsHffGshv8 zl(`<<$ywmVMJ&(qo4X+U=h=B{e|Z5E16*XjYx)ncF69i}!bRqru*p2?jo4%}fj?`) zWM(<_u#vz~YEEd1f`E4}hoVl1lqh!(3T3Xx@*j&GY*c1?18AABst5p+ZBNBM)b8jo zRAV!AN~&Nbwgj$?F2_v;-i!xRS=sI94WreP9z>x+ILA%2%!=jMP!|8nA4C|U!rc4R zaVy}AES#%~Cu6b?Kh?elX%GfXf)`Fhh;57?a#?c34@m?_0366dT=A3}!< z^(=GmL(ohP@wXy|QRaxqQZp7iSlRa}?QjX1mF4D6u^!m>DVZ>i1d8>*X+g0aI8?~a zDvudQ_~3Dr(wPKD-^Gsm7~ds&SlNqfox7+>;QQ zI;Lu)f5^3gR}s!f|70h|N(Uf^9Mk?_Q7Vk5RYh`4Hx}VZTlK-e2pO&oTly$U>)jah z!F%!E-c*SeN+5t&7H4a{4t>Q=xSvX;Vcs7sdK3$40hMpoA2RE`&#ZUj6R39|Q0oyl z*%AzfmNN51m?=R^ynQt2Shk^?;U>FvbWbfD6R6 z%g{0ka5r65o5%{PkKYqAkc?@>Ex)XwsN^xbUZ_yK+9Pp@GEaxxXNq!e`#j1<`^F2h zU}A0i8X3oYvVDz0dAr%##&!?8`6wT^IF*&x#*=I|O|!oXaq1N!X!kl0{Q4`XSj2}Y zyV2o=Y=cAx06&;JGV6hR3}+UsLE!Ci;Z)77rCgA-rMp;eGaZgB>8>tL?IfWHPatle%97VJ(|3Bs zX3w}84pv@=`AR{YWUh_Kcj-HcMq%awRWzu+iZx{?voBl%zjn5>oc$=la@8*UXco=c4`J|qHDk}>R8`dSv?}uA6EbC56&a-;3xC!vk`X`BS~cP0==+(i+0nDTJ9@Sk z7kY2+4!i`lm!rM%xiRgfJEQGwcd^+Ap`i~^GcG>KxZf!3uZp0W1`ehnSdm;*s%f>{ zr^oY*&LzoQa~V9Nvv7b*C_Js%6>!&gqL^w_slG}JPiXRLmX)5284gzFy=WLBkIoF$ zx7ng1yGzF6R92>5kQDHks+sAAhjf(R5iVuEofEeN2qehY3wJTe^?Nf{lj<;s%AsK% zdk#hEW9y939XcMvf$2@9-&DD?I&!MvkrB%eCZH`i85ADIW1)s@H#vmH&ZmA?e72P*jh22M4>GIrbu9@Gh@-IxKH` z#dGq^A4uk1*9Su&Syg@(uZrXZPaqqy&Dr)Wt|im+TCJAJ)Qj~>#3906LNn1OY4dMOY14z-pG2oq`g>Avc3OgJ<0aA zGuwBt34><GOU=cb@@?9AcmH{hZM(@5r>k`;3 z!qk4%j8oghnjNMu0NsE5Gb}G4?Y91`1NY1GkVHdyLOQ}{rb8a26uT>rR);)n{RfH$ zqK?;UOQ8}-k4KH5L9PP|;&Ldh(u3$%HtR*U2C&}W%7g1^N`X4~r>j-<4Az`HI zuTO*bz8RU&^&HlP&%o}+AfoR)iXHJttelfgJxj{1-vrwo`!XuRl%x^ZZkhRPh%rTJ zc=mZR8^waZ{v1cb%(T9WvJt7dD7(Fs3ibW<5ZKz#&SK1iJV@2M8_jWzJ{<)B7f4K_ zoNu$tmf*1$Z>E-<`J34bt__M+Q6kW@AIYcJ_ksH>cTC%f3bJZZ)Hm2ZFg`GB5r5O{ zF-J~705u}Q7BsAj+~2VXOvU5-f1ki|kt0Gs8ytq&1M?n2N9**J9}H8{4~X+_q=j^| z+-CBSA?YMek(6b(L-IQ$@x*K$Lv*a;NQ>^5-dgn-F<@s42% zisEOabG;>qn|L5Wx5=WND0&WjO%LBOjB?cbs%=z|2PSqRLjJk*1DLPqQ?JN$sA5Kh z+ls*5sd{5Rx?M+C&%;<;jj`a{U=(c9^S99;&ZMZzC}zK*f^>rGP;{7Cbj&u?)2P4m zDBWTwR_eWU63X=$9lB5I=ABc`Rs0OyI8Cn5l}lK_xy&mvkF(zSN7 z(iveu0RvW@x9nR^>y zl1!Vti#g7^I)WDF2Y(YJm-5B5rt=^|6xwsJIm&In(<3HQazWv-7kCqD)r8$r{PzUr z#|lg}4|P!5r^L*3qcsIW{F~fY3&%u=I)!BfC*Msg4JIiBL= zl0ZeiDk~-1oN)KCN)G2b995R(E#t8nLwQE)0m6p9B3sWzXH*`Jw7=ARBcLjYz?v5O|3|TI(wTrC$oXC{0X zmfI{lsZw@Q>$j;a7%P*e3eOc*VfllLI8Ues$cny78^P5*cBh&_k|!%ezOKyl4pk~x zs<9ag7MDp@r~txm%)NP}5UcyGc}Ig~?IfRMjT=Dw)+D^W>2?Hv{ilj_&v2|d2&@DP~hR?TiqEg92lF@q|tn7NS*Ac(S zd@S2Sd+|RI6UfFx)5Q%n!IVp2Ke+Ef41JS6i~hmw{IJfxU4GbP4>~cVi6!@h{dMo&9ubwiqD_PX*>>*f z4t<_^n1rJvpGJiv%Ww!NmhQ>eS7gd$>^ENV`5NT|(5TYU016&GV>%#>+4gyuUtw$2 z-A|q}xaPJOAaBAvkCwRJv2)v5xbXM?^tEe;0aFFsv^8M~j0HVV$#O-uF;T-+cjI3dmt+(@pPq^6Y5!L!jw@_C) zF|Rc5yKLqG?3H>!OPja(YH%6ZQ}xmdCk<%DIWQ}~G&h7x@MvbX zE5vdS%V^!~u9F7Weu-aTJQPiOXbpNHvHbwvh;E6_nwz>#8ZEz}G(eX=`|OP9vzN$c zZ#=L@X+kbM9PLfIGPu(~ zBH&gw^MFT7yyL(c1liu2HWK2c>UqY9G!So>HtJ($EK-nT$tF{*uM{r|bT1RsBdlG_PQLo?eMi(aV&iyp+ z_q7=348!H?>ht)c>iwHV+4582jgxCBAMQt+XqLCm=32_1W4=%8@%^?Q-@nJTly_pv zU(2x(Dr?66y`V-*&E~-CU%~LHEPTSOr%A!u6kLQ{&GF- zM_cxpIax04V((_PsKs}+5H^#ucOQaq9j8@c<|C@o;4q9gFz-(4*ON{|8;@D7}FI1Tmdhsk~i zghfkC$6cM^r|6|U9a+)#{Nk)(OwlY4Ld@}sCKn;XA(qU;KLx7hwo@!t6UAa>+viaX z9&9s#%%%GLcMxmSz-I15#0`WGYz5w>_&3{Lj6cDM$GVOT+2(eE#c6IAy`)UQM;c4b* zVvfCf!_f;MzVK*?ukPvIXW=*;F52`f(JW>gGhiRR=J@yRtCf}~&s?%5SKrukP3EF; zf9klTFi|arn7OZ%I0Zzx+l8C);>Mu_+5~(sw1DLMkhdmU#WgYsiEMQ%2&zN3m<=CR!e? zP+BwfcX01`qE1Vlzj>k~_RwiL55J%us&_HRHvPdL6IIw!glyG^)7Pm(xR&yl z@2pnzYw#T=1$zE2eg6*;z(x6@4^gx%xYJ($sFO$yoZN2|WdgGTQ}DTD+A$wR&88#0 zJ(={IubLyK;P?8Il`LWn9^QHqaby#?c*cRY`x^>}>!tq%7yk-eP<{Ir>7H33Xg(&_V(9u)H^vGA}_5R>eJ>vMxa%Khj(3rA+3ye^n-PJiIiM zIo>ZY3?q{{KFBAgh0l>T7s@-pA*(VjUZE_yc!kn%@d_nfVai&CDF+p%RQF@bz&NJ- zJdP<%aZLF^JX4;DXUf0?rp!rTO0tD1w^^7n&%%^_7N(rBFy)3srj#Tyj_NRoxqfJ2~63Xz!cB`41vMX zI^%9aroeb^dMpU00H=p4bT?EqaWvLdv1lh&Wy+mRQEhzTHPFWU59kI=IXebarEa@J z6%Z-tI3uLQe0!>X%M>|raa5V?F*Ol%%I!~u(J4)OdM+s>omMo*ZBGRxg{+0hzixt2 z;E~}*Jt&Ldc)@mg%QdSh^cORi8~~9F119W3hF4{>nH?bKZ(Edz-M#~laFCDqKfk+L zS`UnR1hTcGRJ|341%2BkhXF?TOno@XcK;{!{Q!LWM#D`fYt zPY*`H!U#Z|@(ArDl_6#uH2b?S5ac8_UAtOg*@-{7lQMQyE*KPId6fw5cr3xh7wc@M z;YrX{Ez`j6g6K>NX1_?u9aPa6a zz=$JR6_^6YD9;1}nF&}^d*fawNn*`!1fQ6K;Dk%c);)l z766*I_zh`8D)o2%YZyX3zqgq=>YwOeWOY$CrPez_%qFL4x`~gq4ccj6txz-(VD57A z^#XJEB(z0p8Gza7%{c906Wh{{yTt`{+}n0|Iav8k35tSz+HSj3`pdkc%nm?kK->9AIFQdiL<8_91J-JOn~SuyYOu*fN+)ik~<>qhkk)l;;3$QsiKs+EaHQx>+XXf|HA}k zvuwb&GI4H&B9Ye+J`vH}sU{ra2^ZCjPg&Ursg~GAba^Wjcp|aW?F-VM&%1Eho@v)bmST zB}-bQ*GpiwmsIBA-sfp2s%>)1^TJtt&9?u==Hu#R$S($s=1r2DXGUYZnQCHjjN?gxLIT znyiF*rGEFoarCji`0fsaDDwS5=00rhx$3x0c0vQY!yZDf@E|BArM52WouPf0wq`yE zIWLQ@65$G32LN+yPFRyP9*^~Al-M1ttRA^BLA6d!Kk_e@kdr3N(BY7qFTs4V9TQT6 zAimh8;hd?NiiOdve@K5#=ghlP;hbsGSH1(0zgb^Otl{$5k|BmfMQ`ELT zsEVdmYlM_&3fgf;3Ck?i9isTiI5&1N5 z1oA2QmP|Z~q?G`O1!4&X1(FL~KqSeSeo#P8Ow##C40tKYV|>|Wh-t38OW?-a*k3B= zvPXjL>`lA`E;{cXg*vx)%L!%OW2^1~*(l7zla z{KOSupJ*dir3%7ed&F5cbDVeiJ|gNGBvz zJxYO9t_}8qilXmMBet4)NC+#xIuEC-nUiZC*OF^+gzMXX8$kloB=!f3rbizUFCS42 zmJ<_M@|KkbB_`+RZ>=Dr*h*s*86f=-2B;;|BysP=dk5Cp-=)8s>~DfYDzMJ}8psOC znqtZ%{AJKHES3FLX3v)&Ua)83M#>FEa6_lO{#Pnbf$LqZ5gLTrB${ zXKQPyvQ%E7;QZeXeg`)jd4{~qVfOaOg>d?*$b}Bt`P1tg|pol z2d-B1SI(c5?(9$To6{va2zW^ZHQI=E1L0eRIe$VqDlMZ8h^!9om7^fq9+DPF-{-Jg znBHBuZS=T!Y&%^cX8Sf`CVJj3Z}arL4a9tUZ5+(o%|+GngwPVlU~AD*I)dhUac#&7 zzZSUUQuWsz;3KE#iCQ(|6f2udA?o#dnl)s!CS;~}AjYEDD<(VCNLV3RqYxADms_EA z5iAH=7b`{ZT5McEO)+U+R|E62VJhCMQBQi4G_YWwOI<>!^S)ans}qDikx&EjH;8)u zPXdW7i|nXsE+q?W)MwM*GU?=h?+vP-l3W3CgChdxi&P4okV2?Sp!OivBu+4Hd^ z5s|{#+GdrleTJ~G0gv>^Jvf0P62jV!g!=2#c>~PBSdGlpT2$geo3KYQgkWu1zx3 zgf38u)dAg;R^>@(f)N&oc?#btru_){rYPQTfOI#9BTM^QTk`D(w1WEwTGh&<7G%r<(TmGh5@%5+itIQGE8P+=c~Yz5 zO`g=(k*ym^udd;OgP$Yu+99hIp3ulfTApD(Wc3E_LJB~KF})y3K_h@>&{1V!{zo8R zAPp962Oy%Qwng(HVJ=!!UtFp`vgEiYN=UlQ zL3;a>^O7#jG-pRd^Qnw#K0Y=R^cy#Y(N{xo?3m~)FHE#heF%NkqxZ4zmZ8gIdzewFfMM z`b{;efxbdigC}5SdqT{*H-pGQS=ncld`hPK4ZnhR>k4!7c(u__sbaa@1hKG5Z78L6 zi#0|%1JnhK6C`u2=Zwjz|BJnMkB_Rl`iF;10s(CPJKo_7;R{S3Px=PW?&yV zBUlMZFhE){V%3V80n~8OVT9?`x6@MnBL6SH#<)~R|YV}W~*#8oJHt0QlU~VQ; zDSj?$gm%lgtTwOYdK8x>r7%)4q+F&fB}ok%9FiW92l_N6L9v`9LsCN^;Zf)oWIo98 zQV3LDAqfsICs8?Plm6BcX-9^*4I6SZ%*U%>9p*9X@I+7X&6a>3ueW^R5|YiiNGrTD zCV>xz1b%w;mdE#olA^f>OV1X`L5=UVpH{u)?s)gf>Mc{gs4nXnAD1r*z80A)%GvLs z>Uh2-I%Lp$fi>~ic}dFGcH(-;Vx4)6GT$@agG6jl3F8LqJk$&3s29A^%am%b__9;M z;M})JvReAOrHMq+DpQ~)l=exoT93E@IhUknmgItM)F=nweL3*2cP=O_ba^*F2dG9# z(K#w;&U+gX(~z`QkW>(lw!ZmplC&I@wv&lLl0Oo4Bs zO8;#I47HAHcQ}w6PF{p9`yl=u&_8;NBI7$Ky4{PyvR+nnOs{)vpe^SBrB0CfkizAZ z(`^rKf8iCML#!#(w+zKTr6lU`PU|lXMM4HDVorwzhVo$ng)MZYN;#@e_$C_glQENP z#uysbprzKKNLk|?Lf7TqTvI&D$z5uLFta@2OxIKmB3Q60g$Fkp0FXS|1<6$Je;vf9 z(Jl>vH>!j#9qod05SN(xdC{zmcYdI6G^2ikUXnNe`nZ!BlcVDpwgoaOli~qkaT0Gyn!?SdIjC- z_ggL+AZfvQQKQcow%<@A{eH*E{9jzDm&#W03;DQU4$T?>Km&I{aV5r*LoIL#1Gp%m z1H3kaew!nQv#^0@H8BN&-N*Efq39eJqpY|?Z^2JFMEbpJC{=E%^RRJr0eo`Tz5SR{ z>tW;8<5%;&2!r0TiKJL}aNUjm& z_UNi*FkWB#_NryJ=?rHnf^&iHJECk-lO|pOY#^>S#dJVTCgFG$;-~2Fi)Zj9Zco>4 zNxh0P*%jBMjuKjRYG`*^xi7S#Y=-ARRky%oxdHU`FHyjK(|tD_s7@(UeWAT&=c3h( zqlLHH3|+@TQfKNTt=Hnl(0wDAqxY}nZDlQ+Kqg`YfY+6>2^)ykKGJ$7n)VqjwCeN` zBK6mvaOy(USj&U84u9@;Rxz1$z;Z}pRQNlH>0KYW=8wP zbwvS1Y|~D(Oi@!{1=rj|5h7YR{D2|K-GjjzVX%s&4d}o|SBE`9g1|5ookW_aNX8eh zEdv9m-898rs9$mjf>fD%C{Cc{REiGxc3b;c-{=@;Y}6*VM+O(3&_KIe8Oj0-@eP!|I1$` zcC~k9oLxDOEU|f3kMEnruAa<{+t2EDAI5QfneDm$&)ux7tz$f^i~Axz!aDplMs~i) z>>Q@enfsR{9%B#eUm^{fF=N@A^<*qN9~);YPOBsBcgf8G!r2U2q_h(l~-iNfnRt9KF1}!rOBW~$8IlB|`Kzngi zE0)t)X|}RLx2Xp|P|cLkQ1lW~LR%S&2R&(GTs#xB%==7CX3SZV$y{+|H_DxAWrF_Z zcH~Zl0l?cJR zOZZ$D``tw)_;~Wwq)PB_7RU^&n~{Ol$BH(pMlDW|P@VYb2A+Z{qgY|_kq#9` zIQTO->`DjN!YraG%gJw!&4t9sw5gD|mK583zg3a&UV=}@hMxl!t_6l^|69VR$#!%Uc*H? zY-<$bMj;nClvVg09hT!_7owuJy>STS5W-X48;1<9sBpvF0V7d6E7*V`4238+zt_CUOffVUG%zvfZVq2-pk$`|1M9A`o+ zXpvO$uD48+^c6jSysgY||kF z8=mk5 zD)oKa6_&ma-VOl*B|l*Dn;3JPaj`C+@(Vun70@@f|E#mxQKlTyM7woXyE<_r=KYN} z;*EcbZ^Xd2*oc!@5^wHsz*fJU;LnsDOxdi728b|^J`TA^CIRekr+}rmBzlLJN+Wvs z73lyCzvYJ5kYkWB98sh>c6hShB^m2^)664Fb3?cr8a7YM3PUf-f}r#+op&NdYp{ML zE|Cl0h+(v!$%SjO%C#xc44Et^g*|+!6vEv)8e0z;> zOeEyYSUXr+u{BXkMXTg((H7UKDzC)An(2tl(_{*)Wb-1_YpKkJAx(!e+nrcLid5B} zl;ax%C z!hyB*J$CbPlp9Jh!B7QPg8chZBbU-gs2+W z7(Hyt~Id<$W`2gqn1CQ9?V>>sliq!F7_TRw0eXEJRMFIF%flJ<6PZ>A&+&bWXt(Mc2K?x7^z%h)J=`IQF@Az^PC>|n2x7t~>|k)%FU zO6s*dlJV4EAgRMG0a`RvpS2g8KXA6No{72gi4Ti1_h2(!SDu0xh0F0Kasx*w5GNfqlM zZ)1aYaV~O_XJS0-R$hLAXFLynHJAqVt+a$MA@Q+ORq4Y#|w@aa?ebCPrmyf^kvc(CjsoR4XZ~WO@IC<^f?guYttA zb5!vW(g>FSl8dK+vYJeB95N}Q%a|E%~RVyOE- z4a=R8&MNGLY6wxWA~Z^PaNS_fq{;EcM!xrOvD-y!F23TyuS!e;s)=Z)GLTPzN=7o4 zCJ;;h4TvS+pO9j;{tOVydi|ECP)MVLIp!APsJvsrRG3vbo4uAfeS4VG-^RoFdw6JT zAd`!+E-rlLh057IxV;HC_p!TudrH}T&FS#HR{BGgXzS}hu2n7U1Kpk7L$g=nyEO4p z-c|6}r!J88yHI7oN$KH$q``G1G<{HI2spHKbr6QgrBpi?h>Jf6Lr`4xH6x>jm=B~g zBf}iNJ*;2@McYF-a0Y2|PJzjVgJ@VAT$KXvHG08F&Y+PziXb*z7!0R?!o{O_!W=YW zDSQ!6?^uOG{WVILvRR+>G%X?-t6Jd9dFx8rZJYI1p6)Q1V-b2Wml&(4QS$sb`E6L} zEm&x*Bdt}~--bd-eYkx~&IbC0J7TnpM^c??Zq@7_TGj?F?BBzMzk^z8_9|-GLC=eu zl$04$CkmF!%crp6WuX?J(2)-j} z19blR39F450x_RfdsQD0AR3!oY9I5hlZJKQogi{l0p`8!v9HG8vHWy(`v@Ea@a@3~ z9p;!1uuDIei31+yAds54pnrA_>?~!yB|0E{y|q^yH3T6E7n?od`B*zW@MH|op@HOQ zYSg=3M$^^LeY}IrBGT_^Y?pGxW}p6nI?7OqIKA>L)A8D;51+S{FGk7k_5*B2f%REkw2 zDvgaH;iZaAvOSJ9)LjUg-N6yNn-4%h7SK{qvQveO8@Ys%bC5o-%ETKU(LL&6jz<<_ zpZcElh>@vL=Jc%$`<_?D$iX~}tf3w$Cy=Mt>8mr7+4T;>n8%#{CQ4%mNdkJTZ;#oo zIe7mNTbYv!&rrH)Uf$zF2(B}rGi8T2?0eBW%;PQV&xMD3R-sBN(&PnkgH6~PWzKw^ zI&BNyKTdX5nAlmHYKGauAIYT)ghFVXxbZ!1uwt)(2iomY+gvUi0O^ zD3cjw>FYgTP7E0|kf4t_Qs>hk=2|UhCQr@m!8bPtBMvNJN+S;W54+J@b{-~1nHrJe zZ$2)YtG0l;T$DU7tEWW}CQC3>Pw;3;SvJHrJ5zRqw&J7F6Fh1U^etuC-`#t8Da+nG zV|439p5W2czy#HdgqNH9b4&s(9G*UTpbsrdY; zVc=VNKN5*lqt>50+r=s-9W^Mi6zH@lhV^u$OUvyjck|j24l2l5J0eql+Ck!Y?Ffh( zww6KZAny-4w8%^Y!t8>-S@~g3itooRI30X%z95e8H(L14zsL9g#rPgN^IyYvhiYsl zlxN|ecfxfo>p_GvYvEj9j^QVL^0^d*1>9hzO>C4@ITnSKH}If=$YSe071vV0fn!Yu z4veGj4HoM9EYx+eh>H$cE`-qgJ&m^L;(sQM-oj2FXI(KG?MkB23ahxIGv0#oxW*0EI4FaA0Kx- zHlo`|#-nEMa6B5#=)E_rcIL_7L(NO5$|h8>nEUaX6>vY2Dn41}Ti3+=66`baYbaHg zdbSxRRMOf>^;^#{Or$J8>6Fd-tuog+q<`q|q^g)va=x4c6ueNUg;zqM*AHC@KP9x5 z$PL|0-ObY6rPAh$jO-)zJX3ws!Y@N()WR=AlQb1dnuw`OO0AJif~vS#fBg|?Xi~TR z3x(2sVa3BHtHN?J9dy82YW2S$z%QiNV2tMcVI)w+LJWc|12S26y()I-OD3AxpL{q9 zT8(kj5}g^vshrKsVMADgn>o0{gVaAJ`6dYah=VhOoO6ce~a)&&PCc(KH|X#9Y&xZ4?dV_1p4q`Znr=W9(*vp zTiFdst0C(%>tFT(XkpAL8?GTIz&3avzFl_|c&Ujt{m_7@;SU`sb0eA`W*Mx)ko$qJ zn|ZL>r4NmbArJ&|@cYrDY>V{O1N8%QNh3ZNBmVOMdAjJr`{5sJP19FDEcI)t@0y{O zC@Fv~0GpACs1)JGgI}S>bnsA0;9ONSVW@}FV^l&^@!&e8I`}|3^xw2GtxIfWJ)+F< zQ{HN4N|PrzGu>83nrI#m9BNWfx_$w^;Be+hf)K*N?CSV z@T#S@=^@%eO7*5qc{ia_p*|Za7_&2;zz_!vw@JbAZ5kb_dS---J)vSlf+9T~ec0pUq9>g`TOna}WVj~6X z<7mm~3E0EPD%?(Z(1i6tp@qQnEoY#+;2Uy0=BrugK^WrV7A{q6ge`g|M&i;3oB`a^ zkeHYbu4-8i(E!8~7y#_&7&n(t@!M-@{M^11=lD&-2=XzyxY*_uH9&tlPi!tq*~R3x zXpe#|M3uI93joe<_ z6%vf30oLnZ&ow6xn)mTs&;<)0b_bq>dv+R*PE5rfnLG)*B=4sD@#L_WYHkD$R=g|G z&G^{k#4LY~4>Cta()tp!tmu}+iXZzHs8g>Gnr)F`LMctmmHcs$G&u>c`;#WtLk1Y} z55pX&JiEAPZU0-zb zgl)o;>Ivtia`6z1nQA!C!G&jV&IUD{m#GR*x*Fzruu49x3J;yX@h~Tf13P--ih{68 z+{I-+7&c4XAL<#V4k|Pqf24bq2KBCRDng0c5*Z6Wvv@871iQP5-7(+~_S`x(6k=I891 zd(YwWNSAlmOmA5)K$c|>d3eV8+$`8aRkVZLJQ5Y@_pq8m1M#UUAQLz@9&+%srM!P_U&hn`hW;He&;u_cTB&>h&icz;-NyJ)VMZ zkd>|Mu0^UKV#{+6&F;&y4oPxlKgc0s5p&gYqqF;JSy9lZLcjf(CZejybMdTNZm;9H z?VM@ts^E&6)yVA|wcJA*(+;VK-=P=cHGw7j*xhCD1XCVouRE_rZfVM9P|ZV?ocY?o zhB*&aYRs3AZ(Efjr7G%F`&bvxjdG?%&7rCGv5J=aoyN59^jGf3^yqDyIOUgZy^uMO zCWN!umC}jJ+3YIoWuXlk^BrOZ2QXs}zL+Oh&|DrYRH!nL!9&LVJ)q#^wf5wZ)T^i^ z4{Zo!_(KQo?}44fTYHX5ZQiFe4zzV~f0hOnFB=<4)gN>mLV+nJb9xQFbpSPx__;)3A%shs1 zN%8E)xOf&M>FiYES*?X6B-!`zCx~ZD{tfYraT#rJTGAOaLld;q70&*!J0_f!^+A-v z3%voxgRSWhvli2jdcCbIwpp*`Vgac(g4Wrb^TAzGc0Je(s-^fMo-{HwQ9cTnZqp7J zEy5JFMo_1KG1L|mN-j~w%`R2kp{U~1Nfw7gN9p-D!8<>mNA7f2nyz_MoA8T0;=4{K z;BJ3}Q1wiFnEJ$;dZ6m-_9XV@(W6Gr?x2ybibnQib$A&92=w}UI#Ai6EL-YNDpFbv z<1QA0j;JE4bQo7y2xcr8H{QRGng`&hNANzv#}OWbv~v2Kdpe99BeXk@JylByKRS41 zayMS}X_~(MUaTdVa>75SATUXvLzOH9v{oaJn2A}IglIY=@L}ftczGSBvm?Ql_}6u@ zV-0azV%rir%J5~+#O_AR?!KKD?`{fp2eOP8pgzrYp=H)73F>YMX7e0%hhvkV%#%FD zlW(3_P4Nk@$dWXX0dHeB>K#}@Ik&(540uF(SOEgw8cLCL#+uqY34{2k8l*C#*t~>M zG*@GqbRHjYRK=#4nKVOAtw&E7b;v%dCfY}1i6H*^9f&QAXMuBxz3Zb(F``C&L@9-T zuTMwJoeWsPK|`d^%h`>S6FB`sMIYQ{2*$0BcoH0_1BNA3Gdc+mmyKeG%@u9P;pw80Ic#3cX`h$P@mC`B zMtAN&g9JFK5Q2apqd=}_&9rfmzlu2=5+m~G27ZF6HkGow*CtK3j*GRNt?;dcM2z}2 zY=xcY*4^t!o@49T%y||-fz?1>{aW8la7`2XlE!y6X?{>n8VIo20y}j75^HXN73Hfb zf%#z?bF}L@@1AIOx4)MRZmf+2cZZibs$%edP6qPN>rWds0jnxyb61*gp2$a3HvBM6GA?>x}A#TNvK~)-IAK(UyN=SquZ(I*1wp} zz{1g;)a}%SW!2lZSxX4AOLW9Ukc)R226GJcGDn^Rh!VJgwxT9R=u~^7l-*rR1LJJP zIClwY9vWK#a}i;OX0PPJH0TawmQo;G!z!-+0Eme9Bdfj<0=CCuz zXa{m;j730pu-e6(Hs9@X~gK zY*VLiu$#leaO@aKgZ`?WcrdP{1k(NDYhTWRR!3~0Pt)x--0l|m(J42?Ro_}%hs}GT zo6RP?YmUfyg;UqyOQ8#LIw72OW{{j^pYVi;k&1LWM+vg@UmF?8p`Di`` zp_2ACzG}vr-<_BJfxEkUN8=QJ@ME5}k#A`MidVJtRKt%-bNx=z6gTs#Ptv%3oSW-C z{(KY(?_k*NokGqoX|fl+*LcDUq3s2)S<{n+P_j;~eFVMW&r|z|Wx8z*5KGkklO*@| zO_DjE-jItznq@p94~RCV5HW$C}1PH&OuG zO@CI|6+F!pMkhWy7~dU9?DQM7T9=b&&D+Gu;+we4YlAUd7KGN^UZ;v0jjgES zqES7#N6T8PZqYUSTD3~=sfB6ha4}yxo`Uk@I{i;2ScrOT=-=KJTa!={RA}|K1_{h`5Hj& z$z-Ty?*`P)&}*lFzL+#~01vLB9feawb$TlxYTgTchStBCLWOQ7$d^1bbD2$|i)Zyx zcx|> zf*5Mp-b&>C`osY?p_`6dFl2i|=P~nXLOzdwzjDgs|MLe`Oe}GW*$V`oXalYF@tA zM9om%nF&VxLt5Bh=neZya2gB(t0vlc*#B&zoAu|@3BWn{Fai9>Hvr&m$pF4|Cy2l( z1%!IRrK2#7F)kk3z!nS~1rPnGbWNN?C#L%Ws|R#bMI{`mHvG&QmFdg*4Dkb5)gG~( zhbO+M=8jZ6VjWw$mS>G|@T__@_XZbRT6soOnHDz%tP9ZSp2CM|rquUK|nP!O< z0hlGo^cpuy^!gR79IZD>1XG1fa0yz)`@DOu{Ic9V z4LyxpTgtMVDYI&cyz!QM>{&M3^fPhdIzsiF$89WS*}G<(;|b16wL|2qed8Qb>KgR1 zIo~3a_!aNhF0uKBy-+g5W-B|#H|zyShk?FKX(W}RL7&N@hUGf=~D zI73)Rnm@fw`NGSTuaNBl6$6V}*q{*PF2pmve%~_Wj@a)*2_G*jYRA7_)_{?_2q~iq zag?R#Q~YaXgZzXsav)x$`|+|udUzii?6%&E12%|$L@B9_Y>=-FHzZxU6`If6$gIo; z`5YL>RT#LJId4Up0Ot$H3QgJ9z07$RGJQDziUp3cqI#-qghE69Os3#;KJrVT2(&XW z75`sFwWV0Yv1sUGN<(79iPU@BrxTi-qwi zhW41)LckdmX_G$}61x}_!cjL5b5ycH5l2eG4B4O%Lj3_f553w{77x$!7iLc#JHUT{K z-Kd96*sY0sGBt6(qE>yJqGoM{enH~X%6%i4vmgB*uqw2>>`WX^lUbk5tW|SEMp=Jf z=(9i?Q)*g!n2G&yh>Mb1&Gp->xUn(t61=g~P(0YE)^aB+tfIG>^m$?(7ZYFPVpOJI ze9p6~dDyoItGKYF2RO5fH^-RcR!|ER{L<`GU9G*O z{ENrbppnWdeod~a1@b)fB1DlynPVI_siWA1_Wny*iN)e zntkp6lFlfhYBl+`sMNth7LkG`!ABDdj)%{UL%gEsIQVda&;6NP+@oL{6YB0Dw3Q%P zh3^AaV(q&G$?lVb#Khdc0cnFrQ(49D35|eNk-!nEFrSE0Kn-(edDw)_7FKDZC_Tz1 zY>%=DA6VE#m=wn%=|4L)_$%d(!h9|WzD-BW|1EU-&+3ox>h)s=>dmkS0{kT5ppu3Z z0Fj7bC|w9J0W@9{!IBWF>f;oEOg$ZpiY?^sQv$|Bs=p9Yfj0dvj#M*Fg;bl8kji5c z?+;IaR;NZNnRn1aC@`ac5260E`b$8lgDmpf&Iq-WcZE=!2rMVWC=Z+P;c1~%Y$*w) zP6`?erBq{`OwFw2-nxiY9Fg@Z9VB%+NWgX6ML|*1z;MAZ15**Y>KDg&Xe(RzWFKr9 z-?LndacJTauf=i$#Bz&Km&I}G9!+qUmUWv$6L%{-tKOgWu@?5P;$iW!Gser{see# z=G!|px_{4$*@OhiOtZ&%G11ItEEJc(iBV2Sipj{Hh~JPQ0V!^=;{RKGm@#U3zY&xyIQC6AvPpJHVHdwyI{*)?u~9|LY$Zkt6y z$GP*YGQ%bd21K}opC*1q@DojmD3*v?1iI5Ap)v5BK3C=h`w4Q0Own*3obG_aqdpY_=F z)_2)ettD1&An64mD<={w5r%EA(Q>1#;#vdgz8qvtA;uv2MFPd=!oLa&inKrk{{qD3 zXVu6J{C})<SAfD;0F+?EnWb{P0c#MgI}j6=x6@Okk?MV zf4}DkC*%jm!A|mqaqcAE0H8?HPsF$D%?tjJxPeb=@5Vs$&**4JQdxzpr$;(knfp}o zbh46mD#mbXgo;s|?-|0$7=l0dTZsL&-+jZGv-fZIF=s#g8?YLdS|=C7Epv7iDp5TI3`rLv0O z9EUe*WI99uX_fURpbw}sYW~JFL5V?78)MjW4O#dT=<_M?r!s~==bykhd-^!^pU@ZK zQ!VL#W$tPI++!^AIQgX#cQ(cB$G3HY{rq_705blpga4gyP>sgG3Qhddg`+hPZKt>k zQ3R$;tv@~TWUbq7?CF!kfJoFz*iSVv(`6zN z4E%ekKybtkB(k}^PwJe49hO@1ZB#3Q~U2L+rn#(cE}ceG8Xv1x@*EsoY&LDt&9BN zpA@43s8eK+1@sCk*asE2N zULT8QU-oSTS6Hk;ZBJ!QWh|Sw*Gy5u|$i1 zSKa)d?uSSa@P*jiW2Z0C9}f#D&>uV1Mvc$#ltNgYYHTKSDTGCWV*57fzu&UokYPSTsH;_4Ila^I!1|A}zM#W~BVwx!6@V#@;bcD+vnQHh$ zd)b2hy+K?@x-{`$n!xG62Nf-AkCwGr%euvJLnJj%3;S1USzl;j-y+k0p6I$s5MQz5 zxJ;|8$z14`AwWjW!5Ne2u(upDGGZ=4pYBpVT>^Uy{tbA;w8zB43yI%9jE&YMzeipn zXX?YMy@~MWKeMA4zb8zg9VfE@QJQN_XqG?5FTxPMEIWCUWrm_W6HS}R))`v4Hvoda zW3j3Hfa!X)K(PB1AlL%)%*(Ji!r(~A!-a39bo4z&`VWq}NKd^g!)E+(aWO&bPqdhK zj+*PF>6{Ae#7GH$PGpZceH8jn=!1D0!|;F{uBC&;S8WPz z=XOeHmS;sLh*dJOLrvGjjhPxEJBo&Qg~!XQzDSWl9a`>z@=;MXVI4Fu(5cj45w&{U zq^q@bZAoZ%m(;eh>^4$xZ$vo9O|XNm!@sUNs_C+$YT8Pu@dbhD1o0fS+l(3{jK!){ z3{QyXNTTE_`PF3z{qcVFgzfjQk@3^se-;hd`aL}-u_s~weaqsu0Ll7MeLHFEB@*}l zVOk!IpL|J>E2+#Q5K2-65*MuzCmNDY8VTBomczV$+W2Hq55lMK>3JeP9b}Q;B+&C> zccFzZUUvC`KjGc4=^!d7SzKOpPf#I6IXnXjs}$k|$AWKEwe| zB41d-_V@aZ=`)o2&Xa_QaeapsY&cHYA<;GQI9sBW`ahxVNO$2AmZTapjGMwwjGq0= zEYfS*r%r-D-}6T^xZN}hB=E=mUGT?FqUrxP_#>py;+P8>-or=ZI3>wWmrU~A6B43M z9I~{Nef%W&WKres`Qvf&*1<0DsWt`}Qkj8ICPg}-xCQ3%e}y})Lk3P916s){&N~$2 zkPphrR*P^z0+N?Ma`zEUl(?k-tuq&-9LOdYL@un@{D_+Q#r{Ml*xVHpOz_WKA2a`* zwtV(IKeRWIb4Kz*s9r!k1U|$-L8#^zwFwT8xI%5=AMmUh5!jlzN71rsV75_{l+GIw5Fru8q-KlmH2Mkr0emcJni^d^Oi5e_f%oFSEo7m3bfauY>nJ<;qpxwsge z$+M8d!AgmuEH#s)C^Cf#&)Tfo*Q)l7!E*Oh^kSu0QDo8;^p7ko=pI>F$`r5gmB0~^ znChDCna*a<54%WblRJWv_CC6r(z99hBe;F5NNuW){nl<->$g`97v9R$SSl#`>s(KQ zi-!=#5S&?Nll3RQc}Uium`SxEs&guXhwSXhN~@PBbEt!(%;7;SYewU8B%yH(TtlD5 zRc6MS>HVUtSRHESmYLoiNkVMZIp`$srtzM9Pr)k1X|w4+Nw@MA1)h(k)Iu=;Gkdct z+O@Fep5_tFn)niliwZR%bNnY}F48Zj#k?OMX6B;3_h2zm@+hGm!L)@)>gTg@d!;&T zl#4wwsUQ4BzI1s(VUPIxQDNbc@Z0`*j?xoU+wcU$K{9T$Xe59T~0Y+9BJ=ewv4j4augK{d)-q} zk^1P`XOJ<*G4TD%WV4H^(QMc)>1^TM-EFpz!RF<6N5J41mtU+$hP(zO7*paw)PMgA z-i$1hfj%B_#2cRC&TIJro(b(`3pbLBdj)V&6~BY6Q5E~WB2dPwK27n9fB16tQoM{W zbfAoJ;hX7Y*_X{{!H2rxrSyPbG^oMDsjLD7*&n&-2rRLYG3jd6mno{T_J&CBrywAZ zxg^GqufN5c281}^U7wm#cIiImP&;7GoUmb^hfP=;^{^u3SJ_NyZ&*=dDI*r`>A-`I zqz66l$m6MvvStb;WvT7_;1N9Niam&OEIm)-h28Mj;Mij{(A3j-&XcMJEAx1;%Apz? zS*VWz7k2$DzbZEHs*h9oEvbWIonE$YICJ!V^pw4V3q7hDRp`~9TVMVLw;v|GV=~2p z-Rb6jF~_BfkJPLWwA@cwWE(lda2z`8eO3Hb0{K+apM-B#SMY_M8JUg>kwoW20LGKY0T{>LksB!a$xaX+)CGjQd}SvP z(^xx$xXTAS!MLXh<1sN9d;7#u{PHe=+(o~gp}dOQk8z`(g^FTO&i#T#kk^UQ@T%ff z30MM__@&&rSw}*9v0+DA8+J|?06q8A0JY+WufHX=J0WaM7u&V!q}#Q-+^*JxF=%c$ z)pqSJw<{j(v|Ug5Lcp@S+^*L95@C75=Q@G1@A2EUZ*2C*ZPyd@+8L18t|;~!`nd&2 z$X#Y(Hn9WMOiNenHxL_+0P(S*O3zy$oF3*q0_Ni%_D6~yxkVL|6*V&7tn~8u#S}gA z(Y=Tssh~1_3E?B-Jjk(EhLqor%J>o41UbtQK=NyJsTwt*N>q3%vED_jN;TG_#tPSR z??`7Aj~zlh$(`;(6-fw%<}UP$yVBJxtBuYge@V01JZq5UcM%vD(8(f}hw~ z!B&jVzP6OzxjVSWj;!rjb*1d?jiqc~vl(B+gSDxpZ2PuSw!NO`9xDH)lx^Qw%I>a` zdEeRgIwVi8&SxI6$s@MotrO({c(5a-{3=zR!q6hAA?!ozmY%}5=-jB}k!wc9 z=%Z?{Q{mO93+zWfea&Z)OFS|l$Rnw}xV@R@9%Yf{8@`#p~$wU;;j$_(3q^6XWvIGfp7$p8V5DH)?XD;cr< z_}{2sBqIC?39;vhdW%>27xW7}_CKOu{Hv6EGYd^2%8hbRP%;R~AybU?i|H;Ef%a76 zcC2bYszEe;DGoL@>xgFm;`+!CoRGHV?2W-kvy?{2psIPaDss~i4Tq(UW5}h8lK3$x z1s$EpLf1+G^u+{*Ou~I<0@j5P4vq}c7w5=OC%T=^D*;hQoF#WwCy2^){l;V(*2|PZ z^Uc-iiYH5@A_1}|>b)}&Tg}0gH?vR~xj*l8Pxa@1E|m(^60+XG?(}DUODe?|*q@0i z#lN;aWAImRNlg~hkAo+)!sE1f@T0-W`owYI>{8wVGzTZ^6P=;i)e8a4!N~(nl&?;} zGT6VMPjm+2@w4a*!#BA7BQn|FY6(^*`yr*Gfr}mb*}s=ONGcMiWX_uU+ z=N0XSsYOuvhGKV#rEqYu%~U10QH@yi;v=Qf$k#c)x z+~V8207l9n)%}un)qaRZ(x4nqV6I+H7T;B^u=ujqs!G`}EBCR_0hqK|FF!-3eak$X zP_N*VXnz~e+QUU!=A$v=>OWDh;Otwm`dU)Gf`vJ!SFfN3@9wf*fmy#e${fRCLB4*l z<(TjU?;m1A)nb{K2@Qs#ZZUrLo{LtfSuAgsorT+Zs8LKF3J-Ip&h-TE_u9%X3qFu; z3!G(E;7$9%9ZM*sZ|dA?Ji>83{z&yE)JN#~^r`A2jH8tM!LRZ(@$u>&R7>fQN9ZD| z&${vuGDA?w6fQdS529EgR4gdFSBs<`C2q47buoV5(Qf4I<{@MDRptqe_UjHCYB=@7 z(1EgE5Y_7R?EJ$S`hfwc!e2}w2H1kN>!g29x8~E;7eYNR(P`KEP+!t@5 zuuuJ^=(1klHXfgw^#|z{oApmGXgBm9?rk?#!#b_sdAL8yg~C68%&(3ck!W1agr~q2 zWzM3^D0AMJ9%W7yKRpf$VX;N26opkHa(3g+gh9G!8E3^)N?=Yph^=+oqN15aDzdeq3RYh45I$eKn_b8k6UTY7g z?258UA24MTQ)-xkgoH(0iLxSilM3sYQe$R_mlu(Xzi8}W%C276B=2sEGUr&j!H43( zp{Df}nd)xhf_Zy z0>O=H{by*G+g$!WO5BKI_h24e=bGH|<-T?lRxo4vwwy|pj;z^iwz;J&yYAjTQC190tGmyxiuF;AT?V1Y(NnWm=2Ujog0suE z_{C-vAhkE?&*#`|Esh`CZ15S3b5E6(2hD?JZ@Jr0xP#odXIzCHFN>iy{|Gw4B$r=| zRCxFmcgLA*fbLE%k-P6z;d~7rGm(Z7s3Z{SsXYlMc!^;LOcbCYfueis`FK@X~a0Jg> zn>s~4bNRkomY|lpuOoP@XP{TD*Ifqs+j7^PIhGw#Y~$*wLHKKibn~ zdvpHg4Z&e9R;H4$%5X^J#wh4!mL_$dX_2v4R7vU@!hFhoUOG^lzxI74@@A zUqhV_w7iS<=dmbrOmumfvev_t>L@E(AN8@K8q}|-^e|<8lsWHOK$lrz2d-8}IlFXU zloiez>SIcimnoZhX!rf;QC4`xt>cy;fk5E_rhF3Xjum|#WrcfWXGQCytngE&>?-xJ zY?MOyFp5GMtZ?Gc8L3{TY%le)>~-{YT`9}{h`!aAvh2e%>`XZfBB`=Vb(DR?8!z8? z6a1oucP+r{nDPl|mxtb1v>sp3ed4Qcb>YRI$d@{Npi9lizu1FXD;Q4v%~4jg1CA#Y zsQ3VL+!kep`7Zq2i}qV_tpQ|?9^8s~tfjAOaeD)O-B8N14`J;u-}f_#2m^n7(-Iq- zKOhYf>7kZ>RA*Fzb@4a?tB(_~^5E9?v4X9D;X;C;pI!Pipz1*_3lA$og@B^9L}|S! zXHkNW{J9v|W~Nl>myDNyp9rQOkSL<)h(F0>$}v2Ah56VQmzWi5XC zTqZIQG$kHHSOi_MOmRA%%G+;ksuH~p( zqpS$)=#ew6iw*ewakT77V`W9-kTfju0du(KvB29YDZtxfEyc3P$*6QRx(cse?*UG+;ttegS%9i9E16QO zfBGJZ+qdEC&^-f)4&CkWF=f4vDIY|=tax&!hbc#~tsrG|03kd~sRyYsw_qJX8@P5n zpjo!ONE?mdj41~|9cuL3!nZ*uYivwF+0a&{tGp z`VRemN8}BqeWI+W1`Xt9Z^C1h)V2~!xr>&v9t{r9NcAw~FaWs{a!h9HQk#C&v;ojf zsZ`Lw?yXBvz9@U&^dfYxzqX4Oi(chnMf>%%j|QMXQg)P9nBKAjFRY=jGz>Xpu;31i zlSuZ!zkX?UJmZf5(7?BEAWjHMUJc@%1}p;cPpf}>DUuaM*`!gBWk;o}Vx)q0NUJB? z)koQ+F`0x7mrulwagNDsodm(-zP>q?JUl9shetUy;cJUBM-Q|c1%fjtlL(mP7$D-P z%u|fIDaH6!SP7Z}x=w?skFsKnU=qspj2RmBvEp|>%x;f42c3St&|V8wG^TJWF-&#Y&`7ipk=^xboC^iBz7R5aEwvR zRVW_gih>klU+Jl*>IBt4tQj~)N$8;?S8Qn~RS}GxqXu&eOtjp`!MO@JFtjC%a_Y(R zp`pC{`2g4m#-z*Go1!ZHwz~${aw@xAnPUc#`1Mg%bWpF`fzBqi zVXL~(&B;M!VlPd!Edhxov2~8ZQOPz0YjSoeDj!)$ZrxW}UWSc1aaKUMq8|G1?>zY& z>TOb#U;U4EgGbVq&?_>|Ql;5uD8eDJvRjAC3uG`vRXfk>bv*D+8!;GcBw7Wm{XTJ}5B;!W&9@e5sfAjoyvRDNVrf{&V@3bF8;a$E*Exao~k~iA{@8kv$&aC0uON3vl~~@)^7J%y3*hS6)277fQ4_ zCS%U$U@ticP&7hxVuFX^k0xSgNbJ+R%-|1O{D(QBCvXHKzN z)dSm&mT7%$HiDzrsBir+8H~|S35;iSCu5v8suLK`@Eixme*lcbnFQmf+-B3Smhb&t zPxQe{^cygki{!;WTNj571c=P|1HH$4aY(&vHj$8W!jflH^Wfps@@D;`U9=2KtzPyG zXg7H9aF1DvzHV2%i)l$+G@=o8(WAUsUn<*;AIc*cUhMq{H(&J!v=fc`*PpZ-dO*Hu zxb>#+fObPK*#+BL9LkZ5OGhrT>389tS3YpA*`;2Hi`nv`yQhToP=IZ4GL-dfH0&-L z_BR`z0ws?0Z#VR9&9oK{^N~}bL|uP^>~nWKW8;y5Pv7y34WiSGJkCZn>+@w_UzvmV zi%puS)}QL%ZnWg~w%PRClJDyeVgNs-ivut59f$hGxSb=P*^{1t<;NqrBtcntAf=fg zI2k7Q0vB_P8VuO*NXGi~Ww!XD$tMn-*KX)dJ820TtTq1(7vJ2O3?#8l-*jHP;bF>t zlC4?sjG<9hJSS6sOg_HGe4HsCGG%A{Mfy|cwHx5l4i77c>bJ<&m2y4>h%X@0PM<7WT~RRW8Cy$gFPlvt zBpY3qzRcFTOYbj#jkSQ5jp25uivxELKMt21xc$Yu^qRL)O_Fjrv)$0Q%8OT>4uWmO z1JAvC0t9n+fnbX>+l`i0-xNIv)hi324eX{R!cqF5{IWwQwOt8`Yc)9!C zWVDQAeC=6c(|?3}>2f9?*v;t;z{P#rY0hmu%!@rT+l`z9{*WkKu>2qYasaCg7oZW8dzo3f)f0B0`ZkFNpX!%SVu}of~Pd=OW*HyH= zekgAq?!L@Mo6F)gSK~>iyxHA)+eNr|WGgLz6U)UMlB}oGm}$TOoqi+(^j|i#nGGQg z6p#ebM6IdeHZ=URY-m^mT$4cqyyCU{pRu*v0(<%b+2W|xVrd3eGai2sThGZ`MiLc*$lb9v1 z-w*mFuHQFJG*GX#es&D>J-Rq>#kI$+-)Com|H)^Dn&Tt6ptH>JCK^628)lmgA#)TA zjV~)9(Bo)$yKH!|xiS*T==OcMeZ9PWiFrGd7MgC4JFDGjDL-l$`o*%%e_0c`8V@?< z#gXQNgyr(V{|d9o64LGCAg z<(chx@-M$LJ-#Jcip-H%rC=Lyo-3BNqzA7s5F$_nG{52Klf6+`PMk)d1aIp zBTv>950pIvR$9ECjjMqiT{k@&asrRC;@afv=jfNp7hYmfo9i6yM(eeZ2RTf6aMTp< z*HdMyL22L=AEM~Dwelu(dSD>TafNZ;Gd6w4CYnTltIsbPN%yT+!xuMDzh;RwZ+*FJ z`2+MTO_3L%V@*^8=(`|IL*OQRC#(U_vUWqCv8g{=59W~=o@fHWDU&JWfF6*Vrz!9L z0#AA5t1h+%l~02j*nJo|2(L<$R-3z@*atI-v)o-m2{NyMb&aA=ULeT<){G6Xcf%aV z#_fnj@9%>*yuX{>6&c$}ZM-X|y7r zEsR#CG1S+A4*WLFUJ3Uo9>*vE@{Je>fLCZ5FJbHC>@pZnZPUlXHTnE@f{H(Nna#6$ zOSwZ@6yTx?au&Pv2d6@0f`7Q|2k`38q(B`m>VWMFpQjU`45vXKoimKo=Gf^$;s0f#24 z-#EuSa{AYo_8FewJ1;^sD?7teJO3KH&6Y}s<$WDI@)Ta`c^j5BH9Q}?oeQ5WXSXUg zqk_#e9-g>T4bR7(*8k5P-x>&S__Onn5xFTH^=?F)-n$Xg-9zXE_qP^F-H(?^v})Ye zZt&27*%u=qcP8Q?RPiqChZ*Nl+>#phzTd%fKP=b1;!dP1DnrQ9W>xIaU%qRqaA1K-MdKHc)e5G%clt|= z4S^r4qPH8)01s1kd6=@r!;}qCRx}EBb4Z5R*-=(h01GeE_bP`CBq*KfVah=@^6SDO zSTf%yZe~(VJlpUAK}I05aFqO>|siWhmHHp!^R!Kv`Sg_ z7fiuKoW<_39yad%C@UH``|2gO>5eEXLI^G0~$E3kYume2WKxf83e2z3!aT;+Cix_EO}AxPAkspj9~$Ob z;m(h-qQp4#qNeyzWMX8{@(hLqnU?%jV+FTOoW4Fb1oKG)yjHnSs-$5NUP<+;jcRgE3Tu zsaf(_TWz|cKuU6Nx{rB2mDl2~dF%YlQ|D)%MnCiX)z3Vi1}k>4wJxl2H+Vq+Tzl`< zMT6;@$b4rS>e|9QxH zY`}ExLsZ;Pb)U8diDf5(%B=VeW?A1b;fqJ=dPY2T)@l z77ZVkS7`nFKnM&lxz5{b|6a4-P3NsPtv{)1?4}#_hYrz&<;0JFyb0It=%J#UshfPv zv%`G-YZP}6^&ZMG$L^O(3PYcHgofpQ&=^`NV4k)w9YwdFSlMug&k7&L;(R>DTn}Np zDcRHR(Z#e(R@(nKpZ#)kUvGCz^GRXpi zkM%thtk^1Be=F2#--N9q%`QI+eS%4}5ZzSt*97GX7s~0{Hoc!c_b39XS?r-E<{y+a zX@1eB30)eq&@`HGJG)0Rk?04v_aYJM`I(v4Y}4uf1sh340bK;>4U?#~bR-Csh22@& zX%u4e)8&4VJF^d!CiJAz6<@t9m2Mt&-Xi)Csj|56W!fYmei!;-&V#qnM0ZB+CcTxS zg|vq*#Aet{z{^tE@n$B*yhz{t)T)&7vXV5m%nS#FV(^*)npi%ZT*4Aa| zP#c)}4y_)o%u|nAeoFnQn(zN1v8Z5Eu}67m;jp$JIqYtN*y3r_wupB3lEc(ld99=p zVs8AyaK)YwO*W-JBT7>#M0YIoKIZw0k9j`9Crp@uwc zD}(~baaJ(G;ipqx;d|zrH_(s_Jxt5MLI|j^TYZ{#nd&mnSyUD}%-Ic)-Ot*A^%{j? z>kFO1KrMcvPPUYJj%m#ESG%#T&@-m3%m>8?s5(g= z&nMOM8##wm@$U8F z&5z%)t zkI4#dJ2qt_4Mvpsp}j2`rtCqynK2 z&=I!s-3Lh5hCel=mHwCR&fafkj)?bYTL`3<$?VCoABo;&o+FX-SCrm}RXBb!fX>^! z_Q}9}fB1Q;?F!t=chdkdpy)&cjMOXT#oJcI{ZJm>n&Z1Sc5^y?{hU4&W5HG#Hx^ky zTjh~jm0NY)^5hs(mw>a&g>GAn6*bEFQdA$Kxd(Hu5Y^P2l1203Fc_4sWsVptfl^@} zdVfY2kJM(8z=ajjR*We}$8(U8P6lo8QS<#cDQV7fQMv|48SpZ#lA-al5Xc{DZ@)IN z7!mE`b3uK4OMInOhc5f}Mn%kWhbs<*Z;qTF5WcZnS|FEF&Tfg)rerfgMQx}(DI<>l z&eL?74&C;xr#C9>ng5~_^7FuH0HWDCtOZOpHY?p&Xs|fqaf_qXh=p@Bj~gAWhM^FT z8y&3w6O-tYMgR^_X$2^DSDohHD+ZPW+NQ{;2Z-dk~N47*xpZAyevc;c0Sm{F~H3Qh*fYNJo z!tQYCRXL?qrB~?DKY&Tnqkka5vS>1QSD&s+#Yf-0gh zWo{t)nj0cS^OHZKi}JuaJKq}x9cNPLCEaC*G!}44K%<1JZ$+p4!bP43nudr_g;kET zTj0NnzBWsB*%#c{dGKW)uQ(A;2b;D^H>SAx$s;E%DTwxGS3~x?heubqGc{qFpML{W z3zAS){!K!+sDBeSst`#>Uvfj_8Hm2^hAi3q?%I=9-VWa0VEUAR_i42UlCzviB_fS%uu~xkQI;|BLu5(I?AE-q| z2H4c7{!F%A{@!bD{fwvsvS#^>ds6(yRF^Ie>7t2*+xU}dp8xR~3suRRgVxpiAWv^H zU$4Y<$1EUn)w625WkGXUwP~VnrSypy++bB!IiYETUjmogu_Z9eN`DT+9wDF32k!4wY)fdn; z<-+-9zCA_#3Ktb1L_oX)@&!dlKx~Ja>LMCi&?k;+?tDV^46X@?HXfb5&X|&_8PijO z6;|m`zc?3&KIC2yhz83<7a}ijcLk#J%3%E)o#kE*G|&aQF)fvx8`yYAJnG*Z$n97% z)F;vn--TaXuq>-IJ#x+&PV+@opHOu1e!y_1c717C4QNj&(#6=b_oMpje4?`Kf*X?Y z2J3?v#_*>pLYpp`t$ya)6JP>(94_bBt1UcIn@SOI?@-JQ=dX@Jt@&5TDoW12oJVh! zS5FhT;k@C+O=LZskB`_4{&=5#FBLGHFCV4FD(~nf1;)o4QWV83InjY$xHnxPCYjo;aILHTozZc^I*&9bcN z#&EKxq`J2+d}|5?ZyZRLWC6~Z4 z0rw)HrY=e$6U}lrpoN1EruYo6MZ==zI?~TRbmmK`pMCde+bA;oK+ss2s*5`P>=|Bh zfK~VaOOktrJu@LqQCP)65JJH0w&FnPot!u`Md_H#qiHdw_KUHisVa}=Wpdp1y7Hj# zFf|>aI4b6O+I;U0n{&CLXY%MX zG!uo-xbSuG=#$~JB_mF}ks0jDwY%(WO(nmZ*p_JVFWG;R#8)eXlG zZVaj8B9$BZFm8M^okx8p+(~}HMQz)!or#g#4^|vt~vq1@BJB|#?LF{$fC$JR}{&m6JPZ$51i{dJrTp;#L~;eeE|lI8W9of4 zqW9YdNCME!6EK3CF%+O?g`2SZaQMC&={LuiYxb7*0RdxhowQcQVnGeN{aw3ZG}eQn z$@eFO`$fGubvHi2KwKOaUFNjo^5%pl@aQNHDt-*O-kE;T&*Z?B6D5rHqRZ4=XS&E;EMK`*WhV5vkqfMj!jBDe^@so ze9M*g+(iR0UEA)zn$F}-elx9N&YNLAo|394ZKnrdE?nw|lgu7-+iP|u-?$o8cu+OJ zLe*T7RMHpkZc^GhhEj(8VobdU6uwX8MzETTgE6L-K(II;HV@Q&Ahj#l0_tMGz$VL8 z+=|m?v$<}Vjk(N4tuLC>_Fp)l2-v2o8Sh_XBSQmJoq(2MS;7inp#74YZjPZxL+0AJ zSB^7!=XBwRZpYA>Uy&AaI=iKU#KWxcZ+=LZVFevvw^T!Z zHL`LrsJhh{UWPxj@rQcg&foR!ftP-dfzp`N1Hb+ACZ!Dk@hG4K;!pJ+GUmfzR-d8^ z#;IBD-=Yun`95^XQ*?^C!km(5pti}el?y~&=25ozt`@>JH#|Y z@5slFsE!z&PnRpTHZVDR7TC}b)Y;hN?Ad{`#)U&)K1A}PlA*sjL}|90Rh#2hlH1LX ze>R-FMlNEWM#AI9f<~9yB`1B+39P{RwXc#yy98IBC4i||g26T@##}RTi3f|f!X}9O z$TG1FBCOAG=lCct!Sf(oC6OiB7t-|+MEb4=JsJ+T0PCmYE=C){5@Dzj(6}6ko>yqN z;kYZeHjmueaPGyPOF9JEd(B&adA-8LCU+~sR_!2rA%Mpe`-9neA?(XUK zhu6^AElHhy;$Sb%=Hp;DXVZLuIGaZfByl$7AJf)64y>ctV}7!=_kf!D8rBlI{XdTk z?DZ!bB^g79+d<%>mItv=yku9W8z?DLmT|~NiCd6;KsTnP(8dIuoU^4{Y2Tg92!-I)DXj6b^}YZGLoB_kvcK(R)FQx@i5mW7&-x zlz^C5hIviX@>ZP7#yo_}dv)S~TQ@4YF%@V!yv9t$emr(Bx2o-7)xx8}HTM|fKb8BP zkE!lP=5f|uw@HcRF?Gl#Hpbt4uQB)%E7(OFAmA)uXzF9?ND|Ar<~6V}!B#rH(RP6* z##rGY$kABAVJvmnDq-?gkHxRU{G=&`^w+Q8!oP+URMRG>F_$0a52aWfgDq@~Ut(wI zz;<6@YvWMfKBf+@qZJgpAI#d-A$37xaGewr9)wh17MxV(6HVAhf@^}t(o6!DR%vh) zSG7AODbTQhX!31C8M@eKF04&(Ap1m@xu_*Ysjy1NVL-j`>z*5#Hc}ZROa`Pso zt&zzqZ^x&o=<*mV%!9SbV5n`(u(4!9jgXVVKy`+9DYlV2ZhnOL>m^<=Me8r%c-l;R zk@@0pP|Ve7iqZxyP>)^5(ECqdCBnkeS=TR_NJK$;?+ZaMLEu{ci$ep@G=j+H}ZOC0Ny^V!0T9~_5bU42kA zMOxDWVtZh01M!aY*>{_X)0xk{+d}+)4L5wLJW}JB&mOA|8s5zL>`={oc53^4cB*zh zJ5+bd$Da1K;%HEfD3|@*q37;e{2M*DX~}RdYIsenlc&|ruj=M6Gl{=U;w$}S(AOh( z2JepCpup?6G5!)CdmI{Q(~Y}{Ih3rrI=C)i3_gZgpo`rJ{t}!*5HqK=h2|BAC@-vB z{$}%k?ZtSWVKmD@|SZ+4_5=@#L z*Khx_=eWN0RSdXSlZMoReVdfFPN;if&Gtnm^edelW9m$dCJ3ww^U|dP)l4Wp4T4Sz zzTi$d50>~dyfIkIv%;ZshhpftW^xSk-=4E9sv0WWFHyH!e<@i$H=c%b;y$d9>yoOo zV%Pwp-{pWBz3dwBU3?qdfk(lUSaoiV+ajNZse)mc$N0~DQ!E3_eokP_1sG=g8MFL z9xfoI)ai!fqDrR=c=h#{abtN3AKMZb+rW*xakSb@qLlenG?!02H9C&352N1WF{U!} z#?fFL0S(~N8oKn{eJeh?#~9qCivzmYLsJ4MzM1CByJ#6-7ZCn6Q~?_L)L@d-q&2{C zKs2~c&uv^>g?RwoqmQ>>9MLjE2<}ZmvD1A19XSO;y7;r`GOG^QQ^frJ7I|!WXP`W` z{G1l4?qkc@f@RG@OffV<>x) z^4Kz{dniBV>^+n>LFJ68&h7q;+2|7FklMCv;!_2Q(|dy!g^Rmk{q7je5o&+gi&@NL6x(`KC?b?#3* znnv})l~q5vOqFb>5#D}9BGzOc%}duKmr@twf))Y^+`l7Uk+b>dz(sRGe32VtB@@%X zw@HEOiJ3tyAKE++bEk+5=UL&zwkIiiE}eAZy5SIxZwDv-;I&d}&WcFE~PETdNviWj>Y{+Y|=g;Cb?=b&#t^-T#$f8Mb63d z+^#}VElFOGtt&6H?Z9cvLcXj#*C7v^O9%QQT?1M9Sou4hJv&Oir7TXD%Sd}#AbJxK z3lI}i)7#VN;HKVDH-J`7qNHQ-mGPQzF?AS^<_&9qNY<(6ok1fGD%!9<$3e&ou+z*y zOFX@A8XBp{!rh5;U_3SsQyHJs%aL%RzI!ALsD{`{k6dytz7o}zh#&S?pwk!qb>(?* z`Pg=RME;Cv{*r_mm!&Qz)Su0b?>lF~LK zJbBR7T`o11C{ufq2>4H>#!*gn4xa-G6s6g%W~(pB7CnF#Q6D_myIC#C&59AQk8CPw zWWe^qH7HRTDJCe2tKgBo83r(#1Mvj3em{<}(EIb*xILf>WE&6IRJp1*RjBCRRDn9- zQG#R(K@GYYxj^+}hE1KT5|xp>0(7=Q=s)U({ZL+PVDgkGoe`IlU{d5k{~HR>q{cTR>$1}z#?&;L z&_&>4WXuU|7dlA6)6O9&(>O3q9_5C_F-n=d0ySbivBk3!+J4hvS^9%6$>+cRGc4an zk``dGbCc3G3kyV?o%ue+`EgR5X^4{ry*tP$nCkrZ$$;w}SHqsgu$j-sW!!yelfs_G zbqRE`zOuuHHMwmFu_bpr?!>bsV+1}h*C1acXD|p?I{Y%@oj`T+(%Z+uqzh80c>4*0 ztpPg6D}Mr&%tB}BAj%gQTK|@w+!OI6q`;h*kWx_f->phMxV(ysrxME&-1SMhcODi) z517l@UnZTQ3SR z#baZvkkDB2G9}0b1Y}_}8D~EA6U1cd#bx3D3BwZ*axk zy&g+{T5_$P;l+m^NtvaeP@@tv6KZL4Uk0R|YbI~I>x7gL)&96Q6LkAeF-|5Vjg!x6 zx=#ZS=Jq-b#Dz&ys_Eo#^iP`<^U{8jLcRM1&dIo8Be~E?+}J!G$UV7u0q&Ky;~cxs zys_vM6kfuUrK!_{tsO9=$T*mbnONu)>IO_;Y}9E>0Y3a;4fw~WlB%~LWrNZ_zQ;`v z27l;_q`_bGztE^9NvXb#MnMo3Kj%d6>K3h){)rlM#h;QyYh(7yQ_uHbq*KqicFW>M z#-lZx6!R+&0&uGB({{^ZHz*_0Rb|2e`7eKfO8=Y#RHZXrRmP^P%B=%bMYI3K;}s21 z>EDe5ROPOLs`7G%s!X^-RX%g6O34sa`N00yagD0nbDgSW4440wW~%h>*P~SWH^8lu zjt4n`O#09EKPkML1m#Wq9^dP?JMkOt01^nkiTFcgkc}@cQhZTG_#D2d*TKcAb);hC zRk`qGW$)6X-eEu**Q4A^UM_(%E}ek6yzqE57$F|`0A#A;8JvK4R{Z+}UyeRLd?m2Q z>1#aPEBm?C`qJx*@^n4w<-QzU3ttDwabLYR9S8p&DYzcx`FfOR`f~JHlw+vJ_k6S{ z(LURcCjgh=`iLv&^jhc}CJ`_PV8gaWMN0>Qy?p$>jY_-CC5#@H1I0k7apGjV zgHV~@11j^87%PE&RC|oMZlMxbf%Dtf&_D;bJ_RKbHZQ=a3xVier~^U{D;xNi>EM2R z!&rgy)}&O!h{-5SK@O;{gagNtrX!n_@kknvY*7j^Ln&QhsLWu8)QsBaoMja6UmPi5;5G*>S`v#JL z1Q5O8y5O5s9HfytWPg&#!;;IyH^K!+WedLn2~Lj;Ce-fT`;Yy#j{G|MR2^{zJ^vYh ztvvDtXJf+dEH-9^JCk`j%-BfmZ(Z2x4vwI$j&``B!_XC;&&KUun#Mf!%!4$Z74A$P z*})Uj75zIjG>DFZ%+o^FR2Znv9W!M|;;cA&;hpG6BHVl!BZI*^$UNI?W2|IHcV74p z>IUi1g~1sx;8p?Eoo}m&q26B9JBxYF>A;Xb7rvVttE9s^r>}w5((P|_Ym5E<{CdUr zM(Us*+G07wVp#cCkm%64aW}EG^-FP<%6Rb&5HxgdJ{woRtP>4c^7 zEW|Hl#q5i_um#XwaKTB7E_$H{wm>tcT*55{OmA^(OL}0_{}UT@6TokNau;%`g~Vwt z`B6i!d(rE_I?ta2{|W^_Ol?>O_BUhB0NOKaFhXi%KYC~0SFp_s&$M5wibI|+xHX~l z_b>RXn4gMU=l(0nwK1N7=iR zCd6-k-#sCI)`baiU(X5Q845qj6;Q3u-bJcionA*O^Y8BT4oL-~{Dg2ibUg6Z>2;?j z{~DhfX1>TuM`~$O6fHG;r7!Xh=_PhY7PW6egc&)1B@1pxjXi``k87cVz zV6)&o49PC&6OrP{yH`k^NBEuA#0qzoFJh@0)6Q$r6#&h*t}4xlvt_N5d9*(_hW>7w zWc$W`Q$kMWUF@)+QiyGI9K)OwR7@mC5+j@MPI*6U^U7sZB{0>ezvC!{@Tg zRp^(!^U_jTIlQpNJDipO5xQG*`eeKRA7wjhZ->=Z0ep+2raMaguztI&hB;wx&wiL- zrpn9{{jk=K3QMOX654h+U3)sLx1_d9cTe19zO$xx!S-gZN$f!r`a??Gc@D&xw2 zFOaeyDeXXM0?HyIzDV5w{MZAez9Y3P#=K%{S&Vs2D)eYfz2oECq-19F#?%c8IZm%j zB~75WN$&!2CN?~blbZ&AbOCo}P}HOCp6mm3S4ey3ufGb^3Zlt!C>abAEm*+XqHw_= z0>IOqz1bY*Ic@o~5BQ*nS-eKiDb8eT)p(4cco7RP7jzCv(t(xwaRI}>nRJTxnI~hG z1rN5+0y^$gl!)1nl?NPn8NkXfVKFn)Sos;L5px*P&f&@kns~eV$=jp}tl%gs_*jqB zq>=-jpfOd26y_+7^q<{h41vfmnZF?`Zg{0B;xIQX@&ecefEiG50(kiTrBCa^kWJX$ z>2supuYkIM!i_07DEJ#XeM9UpM;(Xlw#(n#>2voEYw7fjPYn;1^MJBQL~rf%Y4pk7 zQ3jy^2jnS!lX>>*Y5Rj|+c|if+&cEmbjz~Z-opVL4R3~gNCf`bhF6i*APf%^?e(!) zjXpN3?*HocwmB5V*O})?4flhZ$Lt1QXWo$bk7i$Io;&`d#n+iPJ~f;n2`yu{`a1Kp z)UcXZHe@hB5@JNfIZ}OkvM%01Ps76mTp~1K377z_7(G&-N)DR!NS%6*;U-5}P=ABb zD`94E0dE6E_rP+sXlhr|D5_zeCbRtP_0Z!YuO6+^da-kwBQ*>mU9f?9wsWH-1ro`A zwjeUt&^c{LDyAowk(v?7f-#!b0;^TJ+;8rj=C(6wx!m`b&S~RQ!=ofIsI1n@MQiPx zrlp266ZC;jTF{hdZwH)`P+_K?b~c!HI>tgVZcM$zb2aw@_RM)wUkby&<;tqWY%g8| z273VrxF{eVaxa&?2euk&39zem`R!h$z~*?M-J2BH5)ZU{H8Fjd>TivIlfBEzcftdR zJ%?ENAEXT<6eVS0W*aoHs2aN19-hn!4zPk^pi;3+e zXMCJ&;ag;tdsR11CcC!OMpI6eY&lh6Cl39t=A}+nu&dn#o7dXKuzB6r?wHT+hy3gm zyC14n@%cn43CHN4PH9t!Qc6&yf3{4UN_R;rQ3eFE^G|1BQ)*&@Qj`Z7=l|1rn8b|O zYl|9eh9&fTcK@z`_&(NiU*vn^68r6^TFkcUVtTjD zbfquyJ&jCew6~KTf~xzj=#)Y_N8T!Q&LKU z<<(2s>Q+4zT^0p%!Dv=yc3KwMk3zAV>{D$e+&IJNd8u1b*H+7o^PHYI7wRb|z7&eO zU{s->3&zzvb<-KE;wY?T_nOnjNY+_2nQvEsN8SNbG@NGRYP|EFCV>Uc{c+{p2Z|w4 zX?v@_BgwtoULH9&ggpyQJ#GxOwts1f^5-^Bgh|VG3x?OuJ!jX$DnsE`PxKP`R+tjnPi7epQtMLPgIrfOjMQcO;nZV?C_-P2GGN~ z45Q#w4bfu4B%2l}9`tytbG?GLpslss+ST^vCCi#$b?qco!M_ocROKu7`z=UI^i4BtBvpB8lB%qpq$)p{q$-V*ROQE$RORJKs`BO}RoOjB zRc@KADn}-%%IA|*<<3DA&gYD-K z`#Icxy6xw!c(NOmzf4w@PbRC%iOH&RX0obWoUAHNuc~BtRb{AGRYrJKWwcjSZu6?j z9bQ$L=v5WJS5<;uRhjKom13`|%=4xQu zcCA!HaQ^wOjS71f$8Gb<{=k{}YRC6d!$avhy2$ybGLm^a50BiaEGwbF&>dfEUk_8w2k7RN!dU?YlD$>`9lZOLdwW@f^SJRshg zFbawnt|IqbjU2@Njd@OTaSnpUMOgZIvV64qw)YLn_4WVcwNorockt8)w_Jdei8au#+TRR2k6pg9Q&pX!B%g`~u1^n2UP3}c9tC!q! z<;yGXeEIU4+lz4kInRabrJQF(+HW^e$ZfITQ1Z9kS$3R>&32s8^}pGqzzlv3Df6Pq zb)+nyTQ#I0OM)L5`I)beJY%6>A$&*YX86QKKz4ZBrlAWXPh~1>ZH|QNHG*ZDF~ws( z@f5g#^Vvsz%yZ7iJSPLj=!tKAX#vKsTOU|hJ~~L-c&S_*Mu(MNcN${gbRMa90OGIm zCVum20&c>s8uD3sK1rM#`j9v`bU68WmqWl49~2%rOmG+W zt?SNM0VCK&hzq*dOC!x3v!~68hKBbt#+*&S&H5@X`_QbgSMU9fzUFjcFFootnui&yj%SG51{A_hDRX zy$g+Igq1i7eyoHD6nwqG-abs1DDN^)r8a^=S((Zfd@lL*uRV>mcV=P-yY37~)w0 zv4`9kW5z>@r{RVS%lX-RaqnfeJLN!y|M-$jRymh29uT%jkNgqmA|*Uu7bTvAf9Q;% zuaLFHb)T$0ZIK;K7w-l{tyP6wb*s+q2AYY0 zC$cM2&vT#hu*x^6H=0cAYKe96a3$uHT>JsHfz5zy8?ojSln-_RF6w~HfsF=_^UPeQi;sMB=E(C=Uw`X`&aE5h3f{SG!^UpK zBKtr1=br7OyHud;x1q5*s=*dLXzD!I+IUY6> z;XR7I{HLisv<_;|!YUyzMbGhPvS)4?uPAzs-@~5C9Iq&E;@tPfD6;Q(+r5=3iuurD zT*VWl0$qVB;{j;n+g6N*t3mo@a1-Ls{x~2yeBymQr`W^RLY^tkR$=?z z083K90f-=$XzCWM(~VGk$TZJgjlCO?J*DYBaiQ(eRB%3rf;sat+1e7Qs>2V7?H|X! z>*Io_Ly_z`Hm+%Lx^J6hDN6e_fUkD?#g6t22$+0uO&VagRwGXTBG!ZcS@?$*@Qvp z6FowcX`wx@`g48;r2$s{CmIHHt)vNE^H=N&KW+o@Ii6wT>X*!6<2shk0PP3hHK9|EdLNqq{hRC#lzDr|1jBy*J@%)di;B4{JU!TGwrSkBZea$V|YBq zV9P(8N45{)RwJueU|E(ZR&$DnuxZ6Za*BtsX~i=CXmNGvK-_;$E6$7-SI6@lm{UBQ zO)DNAEw0wYDd})=5B8e5X3^s(E#vO%jeAqy1hPv&bcy#cp}ppm$4^=mMlg7r&9C+N zU1r{h->@|HiAMO|gf{^*BOVEX0MEPd*hz~={mle__1tZW63CginU$Bxw=!0~^fvn@ z@o^cnm6dOxplVirKVA%Dt5dGcsGuom;SO%jKENM2Dyv*;E|r00#4wr*Xlbs+(W23O z0G|w_1CD?X_+%c_Wc23j1Hnf+3D8E=nO~C;A!JNM9BJn(>I08dBVzUe9`$cC`^mVA z(v#xGo}hyA9Z6xwWSH7NDQve4Yo=jmSLpXLENf6wyq{87Fe_1+?;`-JW4gG&D~>+3 zh>PN_a3nET7iam{Q)K^6JqFG#@~GW?wA4FBnu{MrPo!}%cqDLsJYcGBq7#_;b;@~= z{Ba9@SoJs!>A4qI{2C>2sj`-Po*B<$7qyy}-^oSkR^1qG>0{5v^BiDKT!ca#Be@ua zLekA!DIkqU+S9q!^yHtp2yQj6Sp*?%lgaQ=1e?u%^b&9{GA}HopfdB6eA#S%PA>uX zabq$QjJP9^0P+*qTak##r{UvG#Ngz z0|P(5?E{#xh}uAOUaQVtrIm>r!&k{o4{A!V@?5SPiyd?vO`J!;=q*5pih6D}gm1*3 zA^77Aiev59-)jtC8cZwBYSUXvt++z%1WN&P`I0Tof_Wmh!u{&vdyq%$^H4W{eSW$CQ!UMRqokwbhwC~l0L5rzW;L+Kudw81Mk^jXUb*ozDINfkO%O7nB z>B4b1##Ai@MoJ-^bhH!?Hyr<=i$nN6LpbV#Vn?4Sz4mRvMI-SI-FyH4x5g1SK)L?& zIsW~|Wpy_$>+du!IZAiqh-DDEF+F`g&EJ2aHvhQux-#$tA;*Ax2kheO3x(Nn{SNw zR~#rE*@uzINeyS~z{1)-r2Q|ts7*|?G|8Yuz@XR+$U*QC)foA^Xy#2f9MAWtGkjIp z4f4jv>I~t4iH_FeV}fVGwOWrR<$Dyxe85Xh8l00FzJiP0mu-*cuQ(9?TAX2Fuh#N3 z9|uc?8vl1JPfluhK)ls|=+g||-3;ER8Oa}s3bd|U4pwQLx2%9DZH?E-s)M*F5G`#D z=9Xr%%6aE;UAVFVN)#ciucW7ibp-)^ll6dQw+`R@xAc{xWJ^7ll~%|oajJ|?EqJYI4$Ao5T_>`igB8vgEEdy zgpW%f-loGIpl)$UDO^nH>RVVMsJpO4P@lpQ zUoKOa{Vh>gYM-(aA&H_AAw5dEl6QaTRgjwalqhFPdY^*2gAyfm2lXfl6ilS=RTd~{ ze~T9u*`BFeyI6$=p=56T%2MqAy^2o`vWrg+>REj9m)^y9f3u6%0S;QfLhw~J;O2E} zH>-H=qGjn;tsXg#b@2k$#Ukj8l~xhsczqgKk4${P2RT&5Fj{Q(=&S0=AY&if06mL* z9u0QM{hRbq55V0Yjcyg5_Jn_PK&&hah+s1x3v7`mcyR1_ep@vJBV+gQ`kD^NXrlft z`q(}3GSYVNXs|&S=XqKOkNVU3+2eYBb*p7rdi_q5Bs|rS^yp)2gZRIl*Vk;bEGrOQ zsX(f^9C=0k>jKeWOCaiB18IDSM}r;us`@P?YdR7XM*`8=tw1kb5JL)0dja8Z2&DZrkOps)j)A0_>SLkRWfv?s!gR%7R4oIxXXF%dwHNmY_-MbV zgQ01(3kjin>bk-gS>bl1qM-cJkzD4DC^9+Zb(CBhYG`gA*(R+WZs3Mv5-QRi866=j zLVCU{J9ru(CN<`fS~)%z(r$-NkW0J0l?%sv_}HJ=G3|Ef`M9*(O@t#lJYQ-3iJ{SM zhc2Z{yS*dwq$9O-1hzmg7tlvkwf@9EXtzUY*QMRw6?sF}@A{sxXa{!Oj!2H%kqtn| z#4c!I?ZG(n>cVl<9{&A3u_-K6KDxz8m|HISmK-5VMrch$z*};J2{MA2h=8}!QOQxf zGD=4x3f_G2>W@U!7%L3)=ZIH1y339y-*hqfs4lj%f&)5x6{cs7flxWdE<^ws7#GS# zyX);2HGpwJ&TT?#tLnh&Rb^d|E5; zA{HDvQY?C*k$?iGQD05#l1)?tatJWQWOkU{^W;U$H7#9M;_Adl>hozTQcP15H0%CO zy*&+%N?g;11%>-4?hMD@$UJpEX>Zm=wtnWYYZtK+5Wgr(Ec)>QFT91G{riMqu zJicebOH*;3_&DZcJUuL$dZed-Jf>=+;qM1lZg#0PQ@cxrH^*2WD-4WQ=zO0j9UtV@ zI2j^d%uKWahW0&kTauI;7P207KtMvD&WkCr{O{*9CMl;f0)I%R2A!*eTTlz_W)D=@ zXas9HU9l<5rR8*S;W$Dwl4ge^2f>bMTP+-Zz}ezsW#6sB=O0MPuR4kb|va{W#TK3 zu~5GlbM*^|;#RQl3*cfkAcBO&Ys2pXL+UYiD3EqUw{}DHxvHLoV$tH(0M>P$TjZY0 zDo6hf`x;iH(fP+o(EC)P(6f@X)p#deOl&Dkw2=r|r(?nq^xJ+_l2#H3XU zq7#s$oZb@onDQ$ScjZ@l^RdFf?WE65iwZ68Q<$rg-r#$M>d+z6dJ<{rjndMm%FzvW zq4KTtZc>-FQ)4`Y%137^C1P98O<0 zjc&0M%Qwu8fLN*E48E!j6z8kz=z*O-8r&k4FnR7QP(RuQ>XR64g?lcB@@u2PNZ?J< zPx{R&sxya78BW2KavOjX*og_MzT6Rnvwa>>`d$kL(EPk-BtZ$n;eg&>O7su}(VZmH|gCAm(k;SJgoj z?E4ce2l=X6;Q1$?C!~=@?rCNKt2f5f$Xt+&sWYGq_CvtH>f#bO!(S3>qcJrbf8L@o ztub{YkyvBugI@goAzF)bg*!x-`~*)uzgzxiJ00(2o;nG1GOY_2>Lza5HRh6qutIpy z48awVD_eTG)Bu01F&C99J7t)>ou3BhV-aGCn2Vl?wIv>77-D#_von``!s%z1?Xxp! z%UJ6rXM%;*aI^*&m##$f`uB}JH#s&Sd0mnQ)8Lm8-awOb9*?*__fzS#o3y+m~h{wd;p+Y`A8jbJf{vsH0d2uFi^}+zDf>nE-zvm*)7c&fbFLG3KJ7 zM595r*-cp%$#%)&WKV8JLz#=7iS~_(v7+C}`oiH}A)L*Hem7TkDLvtxNbUs~&6O|U zW(*?zNL@&`npnkE2oS-lfC$3Jo;o_Vd%Xh9AgTBRAp|M@KrG?U?&Pa#pqXW#PDm37 z@{7RO2EULBL_Tqh(^(^ECXH_Z#t??1#ny)U;V?AIy-2U$fujo-=L2Iu!^zSUj>zD`pnSw~V)Tk& zh9!S+;lP)0|ExZ#)BB{BY@(f7vWRx-34K!U&K<7!#p8}d(QA^6#t&cQVruC$``|XX zgQqp=X?w9RjnCOU*X?Ic|*oLKBZ6A zqmr^-*E?$p01rHwtXrnSd3Vxs`pI23fk8$Z>}vUl3H`Bh6b3LJ;B3KV2l;?+IfWH! zlg*yF{N!@Ec;mSMxJBkdK~x#?lQ}iLXEveBWy9my060cwgCI$JRB0+W>_TmFua*tE zTxR+4%z(u!GeZ#QJ(cnTGhgVK+_PTQIhP?)D4vx(1A#~sG=-^QN$aJ+Zt0oR(wy#5 z&_$r4_K^k2DZt0nJ5h)5WNhUT2<ti4S$G>-5T>W z^Hp_<6eH^57~EAfWB>ExG^I)2sIVHE6Kh|g8{~PLLBBaxD0yz!3sRFQ(n?ulmqR=?h7SZ_$A0SK_|r^W>z zDR3m+YbrmUh%9B6-3jQoFY=Tll|0xiQ~RX7y*sVs))R%%Z(rn(Qltn6ILpAg_gqC{ zFPjQi?benspqW~(fFNvm)$Nu}2 zBfcwb>75t>zKE4tnj^F5OR4@zWpC}B907jud%53shV4xH(rbHmoL=Q4;2|NYuj~Lc zU}9g2MUxVS2K7ov0hF+>v@Sm>;oRN{DS#68CD}De2^aKEh=3$=P3%jqmalcUbW!i* z2=FK9G_fz8HYBB9-a9n{X!(&x3vSV>?HI-?B6Oqtn48mbOv?;7>D@l&IS^xomG;Vj zxmyHT1|iU{&6J004U19X3-)4BSWTY1aW3?cmu1&|uwAdT7Yw<8^~wk~p>mA}EF3s% z3F2RAuOhvoORHQP??R?no=73rlU^w@X^yFt_M}nEsq5qLsc;dHU~1!>7vamUw&e#e z*t15hq^?iE15-kqpDnkUErJ~f!l_zmPZ#wC>UY4!#i52cgl?2IxCIa|=aK?K4}fU&a0l20wNd8T-aC8=yq2w#cY zhb6gLG>E)t@5Lzav01R9H8aP-2+p;dBqu0GGDSt@k}j0aeVKITS1H|87+#m#tWc3n z7E1Kxz`lk3P9|C{rBDFYg4gA8n+Ynixq3>z^)kuBc5;Xx5@eD&NFJ!DToQ$H`0izL z_?n#qPVZa z@gj2KY3~J$B|MN83ydX0DsC86C?T%7c!9&ZEnqlCYNACGCfL3FfN0i*)JN2FPlpH0 zFdVn&xjRZ1+GnAFo8x+Cx^OhpF+zd#IgPNfr!Y0306qcG_O2Na+pC(=5n~~E0CeT4 zr7jr+F^mmlAHN3zv#UD5=D?4K3$6qEPZvWb$FBjQgf?9aeh;-+M2C$5i7UdAsgP@z zXz6qbr={YTOG|B)@hKau)>=wdQtGUD&LvYJ_wG)OUoI`xqzVjv50#LqCnTlDC1c4{ zNVZF~bowA~B2p3L(o#Dhc`wc5qCXYWor$+sBXBKMG8IDZ5-pu>TkMSF6-jDWT-2T0 zH!t2RFI-`j;B;7`rBg1BRMf_iiaN}NvbEKy%iHrn?tWG|9HuF_b|Cdw-P%VctAX72 zSmnu!w$vNfg<^-!Ufn@Ah2%2Hvs>Cir@@gBJd2c(IF*Ia?e@DXUB*Grhstb5lAdyb z8)kn7Us`4hJn5O3m_vamof%`HDqGq~Pf}{qtsOj4pKc#N0=XZs%1jc80ZCY3R;+N( z&9-99wFqLotpLZu6KayOc+_;OLbs=JC_aQ#L&_DY36XIIO*Z7X>YO}5Jb!@>EzRat ze&|b;Zsp>5u)=z3M8Y0%@GS`_qpErMpAn0pp=ezV=3wi7@e@yZGRc*(Qpc*T;!t3o+NZVw7Tc(9wM>rk!e&0YqMJIkVnwtDtmiU@212!iDZq&$eaCj`r z8X4DbBGs_|TDNLgF!xib8Wziw?Okq~^cJi#kLN+}_v^Gywbo-Xll8>JiH_7e0cpF7u#|e3q9zK|afU zGK*9@3)`CKX)08fg?HZ@zettF#U3u2P|Vw@iekRK6j|;ucl;F3Ci5{WqRBk;XoqFq zkaN;{gMiM8r(G{$7i|3E$Z}079dL@N&gWl;fxhsPzTh*piSOf;QU@>?xbRBr42chF zf47ZM9MAPceINtrzP^>hPr~RHf({*yo5^>27*3jD z78spf1{IwJ+{l>w(t1V9`Sq~ziV_~jjn%eNdLyAbk2$J3g5boLta zs&Bw%v6U?KeQ$gVE{78>JG+=#wiyrGr9tM4u+DFc&*l*?N)6EN`TO7!vebWwaQ+(1 zmmW@0DymCW*w^xzDT?ondHofoeIs1Ca~tF!ldL1hyyR}C-ZvJuEL~-i@&$xT2uLO$Utp>Hw(hC3Wk) zW_>Z)J!@`Kz=2OD4Y0}e=D&C6x9nfZ?_tVs;%9R&iw%?0Czf?tq65Pv(q)x0 zjO_2`r@%kK*ZRRT8%^ORUSZkOmsrbWHzzc!>w)CNq`C)iGGyp+LjU&6*V$9=1q|ov zg_wZBsyN~Xtd|d9=Q8|NdZfY9t?DUdcPmP1CpTtSiAHl@6WpTac`jF6US{9o;spgS zQ_v$x1y%Ja=|NdiCKoe2Jhx_98W%MI@%S3J0_7DJXa4%^U79!-tT@5emdbm=PK;kn zg(p?a-m^*LHy}=e%}MB2(=ZE)da{Y#YZgC{LNicvd*}NxJ)VKK08y5&$93EOE`GKJ z*vVwe9S?%RFl5EKUF`XFD9Qc#q+jJlzwmUTDsfK)=w7m26+`p_y z$Jot1_tbwvA3X%4e-N!#YZu<1q5y6Jv+3FXPzp7s9z>Vw?3SH8(se(3_7EmUfd$A{ zgj&Ih6ZW_w+4k$NtWTg-k_((#I5>mwI^($_=^r@b`$gpZs>WR8!8sPgqf=uZ6Ndrn zBpRmx7x>f%RY*T8{K$OiHj3+ku9Bxko*UwW_b`^2gBtT3$0VTpc^@m>2TcOFcP?p> zt5DGn1n-2Z#1X0$D>)xyp})0lr#5x^F-&!K%h~QW5%8uDUZaET7Knb~UAPb%V@byD z2kd4HNK_5zX4DMw97N4P&}Z>xd}yw`Io{;I(~JWe^Ss-q8T(OUGvMug$;~)GHDV>F z0D%de3C%shNA4(W>Ol3XNr!=I~FPuqSl_adwO#Rba}jpoww>lHI&JJ{T?JH*u05=3pyBB18T zC5^etx;A(mKy?R%<+i~BMIa0jr* z>;Ug#41MA|lo~6@0`vXTF^fl5xECnlG1wKp_z7Uu!y~vjj5XlJ!W6hj4`%?me*qWG z=EghE0>H$aIUP77d(5Lp(ZzBHx#8(9Ix;RW{ob<}ndQW%kYx-w6jJa2a{{I9Y!Dv^=kQ!O2keP6^Y9dII||_9 z#WM08?`aPZCQpnhQ*3?I5Iw!-UGwJdJUKo za*Rk|6j+@`F>}Z7f@cN-%b9=yFgze?Gcoe;Cg58TKm6|mIt~1&oxq*g3lb%v#wuOf+aT2ra7oP;8k8cU&EX-tU>qxa@CD})0v4T$6 z>tYkf&UDh|3ZniNF5n=%v^BoLONf!?Zhb#)%+ANM^Uxk3gw1mEfZ?ZrA9lcYE#AgF z!MSWqP+=Yes`YG45GO+e%d*6w^5?TL{to8xLm4UPWn=s*^Hfw(Tz?kNJ;k0sLHdq$ ziROU!Y2Z=63B4|xi3y0-r1pvT^xVDdd3cM%`ECD~0ny3#w{iCBxd3~$6YfvgtF?Ms z9nY<2&xf$8OYeJdx)-_tuD<#Y*JCAW!29OkCyog|Rb0ZafaY5fH}v zY;BZOB7$Z>lr{h(n~UORXb0w=Vrzr;Q6!`2^9@Qs%-b4c>TTvvAt8`lV2qWR8uOgd znCBDbITK@ruTy2|9PDR>r!dxrUh(M$Yy~@*=VFW%`PXR7v(ty+%L?C-Z7lqitXk2$ zGJ-}s493cC0^PI);ks#drVrd6x$G<|h8kNdI6@yQ1SeETZ%~cET)^WY_gqXj_@%Fr zk!x}77mwc*W3G3|tVCljyRTfo0)w8&4g6yv>A(Y|(+2GfeSpk>Zd$RPz#n%kxgI{C zb!&(39SN>GZ>t`;@DQtfj10yegA?;v0Ku>3;yGL{f~8~k*TvZVO_3)xg$o~n|7sO@ zCC8yYc7OFLA9DpLh|qtv3MI?{hcchtzZ2gmdH}rpye+5z0MuG-s4obxjlrw9cm_vR z=uQTW$0|q=%5ex?ZdWz;+nKDgg6w&*IsJ`RMJ^7Szj^nxRZ;C{+C?5mx4IKH0*eCT z9w5G^e0!4uyew-6?HLcb7n#2%D65CuUhFo0aj|`1cC{wDkje|ylq_J)MIUo#1#%a9 z{x^H?9v?+@_m59*un5bURf7?{th&}!sH6?p(ABz2HsOryhO`6-SMwC5^r_NRHX&*V z!Oa5uoD9&`w%lxOYx_{O(u-9UWh8s+`3+6J*|wVDSyNujG1?5o%&57drSj zB$-J!5TSWea{8q^!1*D!SlGb$L;kHpzaWcQzx-Q%V;v=mqx@SZb|aPLzmk9J9+yf< zxCnpDH6wpq5wFJ=uNu>1=EdTF zlE5UeJuGta=pwh#?LH0iwTeq0_UvKw1+R0_Igj1k_Q1f(Eau+bfiz+E5o;jkJ2;Z1 zEiXyO2Jg*H52S|%cd_^R!i!T8vP4rXJinyzx?yH5Id4K zL9!Ow;iQMNg;3tfMo7NA`?;9l=Fw@+3+gK3d9hD>6zER@NF?onj94H#!EMYsPImQ3 ztnwnGF0aRo|Au<&WnYRb)^VJGTNF%UGv(nmjt7Lqm^V zS>I)Hou?VDF9FD807R`^+{nZYnZ@gV)Fg&-0SG{&?M4Xq?Z#VSy1FaVrUWp_Uctqi z=bomZ_-+r5?Z(jWQ!U0bV|pldK9|dd5rV0!#>IJfhtoGFX`J7)XAijCX#0OXvR1io z03jd&_ZbL*8F?|BO6c{ntWl4wMH+!ovDAn6>`BQNmhMXA3(JpL0&V@jk}vF*p915q zf4;D%?)qZ+!rr~^v+{){_cQzoQpb7;%6v#&@+S<1I9KvMzfe*+JkQzyknsIfzLv$u)-q;!F^m-6t==FGSj{WbU^Q zn?HgIS~)N;7Kc{}WtwSkRupr|1mi0QKz~DT!zhz$foASCUgt1mhxYZm3i*|TR+Jcn zC)53>c=SmZ6lEaQ!OjQ~9HLzpQ=fK`vW(O|ilRIZ-HJ`K^nGsbP1MZA%TO5plU~T` zhk+=D+f5#BGhu}qgaGDxFnjXcl)`F8GtYRDt$+nZ^GtOz9j^{XVr<1GoOp`dOveh8 z-9mtl{W|20T?s2St4Fz%s&zPvQvGPvOB3*!tX}s2D}eAiu;Y|DkKNq-z=X;|`1rWW z3EOd;)u{uhQ~%aZof_b2=&`gKAf?LgwLZ7)o78_Jxw#Yev+&t8w$cu}FCdT1G`8{_ z#HGjwEOOwyY3hY(9qD;7LY=3XAUm52+4+P@PuCmdOv&40oN>}z$5is&X=%YTle5-W zO4NRSGT+?a1L9=pCaz~y3EHr1nnAkaOEZui_d7~I{qX2-PnzUX7%ELdP-gu|KJaTC ztj&|R!cZ>1N3%ojP~QF4I)xM^YYX%M*-K`0njpmC9rJy2e6yM`!OFqD%QW#497;e?TogJs{Y{oKCQGFrL0ukz2D*&HN{(^tv) zLQWVgFS)F&2_@Q%jO~!>YT%qv<0>zVd;poUtTKa5ld*GPp^1rX@do@Q`OE)L`{jN7 z2zZvCvcEie8WDhUivR?XX7vmghg0oE=2W5q>a;$4QD7OCbf`Z)X#W*tkBMGs2=bia zY{IKNIys+5S}Rqq-;uVp3}D*TSDrLGhH`VeZ!`UFxel_;)3jExAz6TYbCq{^}<(k7X@DCZfDaDo?>&5w}ywC%TQz&H+P+4(_2ol z83($UqjcbY6s5C6$+KfP3q)%McH*SjKkyF}Lh4zV&l;)#aOtkWrX--Wh5RB+V|-yy z?4o3FB*gdck9fn$e(6Upz}tm$Kn@T(RG8dslc!9bMzTuyc(pZyG{_-cpO`@(m(mQ{ zhl6Etyr>={2+mDD17z$l^hZycVNY763UQdeN3<-DR^O`Gho5J^XNUPJfQWjkO_zf zs6Ju(t@p)$O^?lW2E_?fp09<^WwM4MQbEHYRRJ+MpNoZF45-F#dIgjrpNsWi6NQ48 z`o#P(K~Z4~it3!8D0lO4^Eux5RyuDyk?7<6vS$+r;A4p-k+gm90X{o1I4Tfw*3@yWG?03J6OguUg=`$c=!|Fk(uZOM-KVVa!rR}0jKjUE$h-u^ngm-1M z{l5nPzaIX?l;8;K9ZgP`cVQiDaKTJ0C~vXj6GFU5%x0lNjD~}(|G3@ z)DGWaRu6>apjhn8i$U}QjnWA5k7eLGWspv+x}bO@!OS(W*y|G&V^T>E4>z3y`QeQn z=}_kN%ts(1Vhp^NKXsufNig?VlDTI-L_FQco*m+!#}>4*nXO>z7Vmcqq1%lJspk}| z?E^>G`ZzjsWIo=-RG(z%e@fD$trk7<^<(G{0sZsJ@cpR_UC#0ZLw`uic+sMt|F4lG z8vS42liX}$kvmD}^@Fjafswucqv_O!$$jCR|C5~a%rWHglY34v1jV9K7LSDeB$BdZy!_@E#p=5?_1_Wqk6%P2Ehl8 z)z7#NQB_>D`1SGgjo(~y(%k&S@1J~vM;DavXi+(jF39K61-U%Bfb-}AZ}ci2T~G$6 z4sxZ6K4}?&CGM=>RiYP|es*KP<@K{0OI^9)-s{-%KOqIo8lPxbe(8&7NW1waA^7v= zBDh}Rh<$KHzvDEIE^zYbf*eB(K^t3mv*1+l$_)v`&G;;`XjWfIRqFX;$;5b;^B+Ewulpeyx&skhXd*OYRcc z`}U8xI6%7^90|xX3(>fa;o-9xm3CCwxe&=vTRJkBd!La$<&4!(8;=<=$yNLqQyX ze@5fqGkCPf$)iO%#$*}AJ`LQ`~ zt*4E3Y9dkzZSP`p;6XX3QGPLkbW=aL)cW9l_MACzD*og*v+29=$yXg1f#o-(1J-(z zyeVWnF>?eu62j4(!Z(^qIzv+lf~J{%BjNa;u;44f!BY2}_;CtLL-x-r#1W=;<8 zd7XRasL ze`}q!D?7f7(dVMrojL>j>@#Kn2vwzc8Iwng5L#xfU5gqKDH^$5QYw(Y1HGVtw30s<*ncH|<4Tx? zifni2nT6Qh)iPp41mvfy{6H_}e?S~F3WlCEG2D4iV7UKCbbb2RpDbFd1jRW&b2s~$ zyIt!!O0ZnhvqFn#s4>iA^ZzbAo8@>1J?G?FM%c~l=sIPhKI#VT`KeRn9|pJo_+x&< z525D+4e89z@WvCj^NceZ+tjzfV{FJp64wZStc zH(U4tgPXCA(V*V%)qdfzmZL{}#FpSKDFaMA&A5614AT~)SvUd=5ks{4ckAHj!Im`< z4Jxut(p}zSJ##07edB>4(Ahr5z`R-scLmC>x}#E#myfwSL4|^mw`)r=b)Q?lPU#z+ z)m+jWP3+WqPJG6ASj6X-duTZN4MWWfTol`Qq_y_WE~XZ75L6oRM0_J)H4zC4kWY>j zTpxCf#d_?c#aoFPeS%8$4JoK{0J9#HKDr>+w^_lMGItB{UaW)Sd@lCIuYxO=kEuf; zpIpC~{FWN4E=DIKa~*g*jvcq-{+Ab9BiBNFw*|lepTc(=Q}`}1Ra&3LHnI)}bf2jS zxxQ#kO72SjDw-#@NJU3*wyBqZdty}|aWPc|A2z<0nKI7eaxB@G1L6%nZh^{H{zHmb z_Fvt*R++b&YNP!P&C|5VzM8X5`>DPr)K{c#fp?5HvdOReXm)y977YooP0*XUr={wn z0Nb=3VpVfM?A3ZY`M3o(wi4S|TpZ{ox|=hY8i46Ub=I5YwkGP_t= zBgRZK8#Qw~G3Nb0&*(3$aNsv1B3v!c7nu{SVlI|7f z$I~yTWjkts*%I!(cu}#G>K;o-bzHYkzHNijaU0j||A~_^T(>X9$w;o-*Wlz@uG^2| zM6a^3#Xts4}B6{DY|e0mjAlxR*onggG8d*$sL6r(fPciS9_ z+cf{+lQm_UqQqy*vfsVkdP_A<@Rn6L!CQWdYJQijrt$o~KJj*V=f7(F`SRq)Mh2uSO8lYA=>GSY|HF=+_>`t3 zU*8etx_vG_;i;78p8xdcWYeQOKmIMu5#2r>4_2l;SpTUHUiiu0xGHOKqK3Sb8pdB( z1Nunq*K6p{-1uH>8|(Iu@ztFZ`@Y&7LW+_7v1*vXS_<=G(HvvREJcY^77*RufhYc& ze4_GT+&7FmunRYSlf1#|pSG&{;|?PGvZ^tt3fZ?Yf4{y#F%~ADs5}_&&ZZm9sA@*? z2CM(BRn>s!Q>u#3RFsY)uG{~BIX*I__}7Pg#?XQGCWntl<*d0zu0gdJDGpd^*2!Oy z9F+CuuhuCnybcH+Ajk9AX!~D_HYjZQatqYsSP=y_G_qwLv|H>mzEr9x@tdRfVfKosR@J%<9G zqMRkud}8}rzi9F2?e>q{4SMerv9)>IM{f6JG@`&Ynt()C?B>zTIJyzyH{d-iGT1Rl zUUZBx0KA4w#YH)_TQze#URL{K^k9)~9=kNg97VbD!IxUnO8BhGBFijJkzYl9)$%FK zt^oSU=6lgsAjnwZUzMdBKVRX57HKiOzW##nDH$EwR%MIJ5F~Z%pDL*pooxA*ixtv% zt88rf?=P0?Vp}EJ(5Kj5=-rr9bdh7O2uP*$<)a(>`%lVZY}(sk&Cw!&(W}MkJU04G zw%mI$rc<#EZkluFCEYX|d8CyX60)$gu;rJdO+Kd1$(hGSzr~ghx)=^({Zq%F=pnZJ zLx)0cg^iH5;Tm6*L!U3Es`J>T-NenmdoE?VJnx_;sFH1kPiNMAgX`b?I4KX&QVQ<` z9$m;dW(|JGFp_7T$+KSWdB3Ked*X{Prl+9jI6}A_ulW#OkdCTcvXM*m%TdJR9cXSs z2D&Dcx`eVU83;!y1Kk+<_bs6*XH)v*cWS>S#8!RjW7D+k)2XZJyZu&^jL*Y*LJs<( zoV?v5chi#fWwi1Gy%|M0o|gZQ>+A8v`dXTpW!Cz7Lbdu&rlcTWU8K9nddDY8R@G&Y zCkI)5iQ{t@qeF{Wsr}?56t|Ui;J$xfzkYl=rC+~EIh%@|TF>Etr`X9>?ISPusX4so zHSU?3vt(LOGzQtG#(w%2!P`SG^fdh|-3O$1b0?~;eGd8RJ;fK2r+b)1o}g&_>IXFa zdL>o5VEWk~|AEy_Uw{%>rms(@NS{K%U+GQhrkjRhNltajUU4od0i90hCtMWg@Selm zQ=GHpX5?dww1zI?k%J-fJs2S8hg^P*as`rwp*W}ZW%LM$^tNOn8=KY&T8&lN0)h=m z7~nqkm;XbWh`u}@$64(#Vu4OMih2B&p((v~PsKm)wNS;suh$;!N$ItZfPU52Yi!jp zB-at!wVp%&wEsN2Ll8_A(ZU z00i*@Wi6?wB{cRxbU}W6Isqoy3&%(;;$GyFvoxwbWS(q^<`_MyqQpnbk|V8>1t}$e zC8M3~Ctg8*IXv+jhoZzk2I#JjjT&mUhJIkShVJ6J{aoG##hB*BTM(4a>gVAt@_IDK zxQ*_#C$?fQzK8_gao;cF`h>C&13rk2kNa*J*L`J`r+D<6W$?Y6rlP*)_$q+<>h?e6 zS?b#=yzKqk`#$NkqA1a;FkgxZ6{=WMl=#$?X8O(6&=|8dD!%_#d_TMvS$)d@db!wz zL9+v7Z`}Mcu2<6%;$`ttLOZgz;JN4MIcZbbO}U@cv6sDQO%2#tcVpq}_CKTWN-8WD z@?6AOyZ2e^p9&R~VFbpxL&H96yzVcHzdFELC0x83j;DwI(`*H*l>JYmHz>v%l%Gzv z=2qDn`9zvSS0C3;mf$JmXhueBOI;I{upgzzdTS*-p|cmNqUhI@0_ z^5c*}*I;*b;EI>9yV|h))|aeJO|IMbd}V_YM|rN>58?b}dHy!eTjhBt&au}A`iOJv z0&v}K`zqGIJiip@Yvs8U=g2_Gb^9oslRLC-&;RNMrK6hb_6a!oKI~~Yna6ee-8h-e zb$bXWrChg%aWawX_8;M7JlE~N#K}0&Rh;B<-TnejZn*8uG(`zrejD)aLW8(&@5E); z&z{8z>}R{syWjnKA01k9#x&!GBv;aqFycF@TF`}-;OoBg?~~RieVD@Pe@)?|N}-W90{oVufMHd@)@Pqk+GkWC9=ihR-{8gOi^Ss(@ex`rF70jpJ-g`7cqa{cK^uj zQa==A={9#-Mwi$;wjhQNKE>XpZP+3R*?!}bz0;CVVSbU?J5M59G@(8}G%K}tF3?}H z-oNYL*E_=y)tRtB{iobDcFJvXCtEer3R=%vvP$Bm*^5uExA4+<-~K9Fh4sm%nWA~E zU-bI(&Ok3Q{Ugu#SZS}Ne}5N3dFB3$5vK1qA`7Q}iKxlXR|rb+>6o-CXSQGdKCTxc#mY zL|~K$gmi^LuqIq%{LEbncis);Pz9f$3chp){CF%U+@{q(-=r$jHmQn|CjYRls3d=- zC4S2*%DmObHmSl`Dpx(HDnH(;Du=gy_P_I6Wx1)(smiM7ROP^Ps&eTzRVmu0DtB&El^1s<-2=TCAt@5lb(^8HDI9a;(z`(=%T?x>_eIAu>7~Ylc#LXR~5y` zcyGAEM;_xMYg{-P-RmU9=6x;>BV_6#qCEr}FB6 z*v`#H8981)2_fcEcp6AV>JWlWodCyHsOC0f*0U!~_Ke@Iuze&$JkC z4aTZyi^SlD{j%|JzM^zw8IODwb6on#{x=q2#H`HXqPOEl9$r$WKuhDIJ#<+=c`tlF z?)b_oyP&Xb_0Ym?Gfv-vHvsc5bUinltfq0%CR=ATKGWB<$lV}L2{7Nw0{F0I_{vcy z2-yi-G{_#y+hbh%?r?=K-GQ#1J+ldbbv9^mQ++@+7=luSSr6@>F8P4iPS-7of;oKoXexvTG>?1s-&YS; zz%DkUUr2qb|NUv{#drE0^cMQLaxl>LET4O(4rC66sgqRZ;3`umIGMxiWa^|`pe-s{qnxR_W5``jP{J0Cn+PzF#$ z<98t6qK%3rUmyQ7U7euj9pr4&1RIaUYQF^g9v~M0rD$&F!oRNcv1GG8l&EFbA%8`*i4)N&^VyaIr3uPzqvWF)xR(6pC{)1)4RH}!j zeg*1yW~Z#3M3y#KiNLTkoGp z>+iv`{+&eMhtLoeK^wVnn0EppOdMwJlg3lz04%>3P6_i?lZMxBWaCBRRWRd=ZUdBP zII9q^SIyHt6y!KL71e)$-{MOut4lMr-L>MHjG z;7UB~ia8X;r)#}@?jcQdAuVtTLO7~};@yB12CRt>aY}#^&Gjx|E<)@9k_F(U6u;OW z(62mk-3c>%dg!9d`P@dIXb3ysgTmcrzDeZ}J{mc=c?=0%h1&}wF+cOi{Ly*}b@7Ey zI~MsjXAVzS{Os2)3&(+*APmR&9pxtOOhlfLRiKuVs;TxVHo5S!#-a@Y1XI0|*BTH_ zSXUK(eR`T-oaW;isKsnqIZTayrfzVxU?&j1$TPLIN-**|tG|gdlGW2YHM3b0M*`w7 zk2a9wbU>WM5CH8W5%)rHaT^Fz1EnBKQqvx{DN6hfuzPe4+>hb|OoZaxK!)&b)D(0g z#uI%PfA73$N?P#in&@;*~AvdgwTv##ma%hm3Kr569HG zVjLkC@(l*!*g&C3+}vI$-V8)HkPAPLKI{U{S-6+6*ddg&~`oXavgp zwo&Lb6@5w;O|yWA@Kybb4nP%DG%Sl|bSy^FZL@{d13QzOEs)n*kf9t;n=O^eD*SqR zM#mkA3gv4%##&#LXhY?Vns_Y{-|yGIordu#>B#AOjFvW4j@ARdrT#f;)#+ zRnak}(DP=9|C1^okX1JIuQIi={A6XeUG?-%1u$fte$lH}r15cb>9J+-QbcrSIgfO+ zl}`eH$K1suA5?zbuLsj;Es{rSjmv4gR0$>sRCiYY0R^7-twrOHaxK10*CoQCHU@bv4XXVHuoj;2~=LL zXH70#tI*hS=I=G^ZzDN*{gvs+(p>JT+beVHO3eOq>TuNTN1Ie zm!k%Y7h*cmFr&v;{00`kv;<<#PA)nE8RrQR6Ij_87{Uo7xCVbb;CWiIz=r@z*pWr` z1S7G~w*#K@p)nWE7-QBe!vXio_3T%!l5GS1+HcIi+?s57M;X2yWMW~7G4d7a|22hH z|KHwMP?8c_6vSsB{}7M^u>>Lc0LT*e9AFR4J8PO9_I_nxZ$K9#Mi^rz{I2=oUVF{( zaPLsI61rTtmxXQ)$2t*Ivg}7hNM-@CThetNt}as;Q5uMg)$uk!-$Y^|_f|$BIoBKI zf0u)G*UR)7ms=kVLR^`HTMtV}j~GTq5@f&5)BL)37~#kQ)qPJR0x=t?purx3c2Q41 z;tLQA?RU+mck;RW*7%VbzZ9fx zZUe~z;nQO(i-B@np@eSL!ZofkC3Ll+%UArT^$O#cm!Wm&3Wz1f0(pC8;`T$y+rOl~ z^t-Ad4wTlclPPj>tDJJN9CB-pnW<2x~Q@;+lz9ln5g&Z*>d9&SALBK4)Cz?z1e zhb8B$40KD(HtZ-4}uXvDLR7@Gc*{?`}HMKXt6SdOWBhU z8>KYrPROTjDYyb63z94#v>@4Po}SRf+|v`XC(R8jmY|EJh|D7&z>=`nSV$M8{2YwD z9kK!BdJbKbraUY-2-E188~Rk^@13-CR%o9q0fsGAW8+tJE(LRP^ly-oe%>Bq0v6QL z9Z(4*WY?WdfEudCD}Y`TABxE<&c_GKV?dmaD}a2tS{d<%+V9_&{-!FUt$(TaZhS*k zMqB^*8!G*4JE|(%kEqIqqpET^<=@^Ts&dIuRp~sUD&IJ&D)UmxJ$6)0-iO|W>16|; zio}!b1G5VsFHevneLNt$C{~*U#duI0^TX8xpkMUCJwNGo=V6^ON%s|J77<3pBSUqG!(#Knj z$8V;-%Cj0Yk{Z-v6pSaJb{hb6E`t?M&vsiyY<+FMEAL=H#PmDt#=;H=*|GbReR?K` zTK=5Xf%#m|>N!I#&rNCh@f-jglzm#uzd5AS?8pEdYc%A_4T!d&*x`eWvQP4BKM6W# zJMmS$-1A22su_!KO&FBQ4)v{?d+5AbqFLy(kiBANt|q>huZe|Tz`Q3Q?ku$(^O53Z zEl|bHtD%}MJCM+`x80l6vyYLUy}{LsMJ(P20i6$Ixfg>_#z?C^2JKOD)zeV4iTFWj zZ1%eVzCiX_&^_a^`#^GE3tuWLGgX3Cg#`(DRYU0HqgwyK0V-)$lrmC zj%b4=EoHOp6DC4wA?1fpU$Ur>&uwMT)L*pctg48Hhhk?{g=g$G-_%CV$j_Rp@t|HeNg+c`=25W6Hh2q&c9@ zG6%qrK&gg^=tc9%6ab3q2dKJbEZ9KC0zZ-*SyqB46IOz!$x7gdWdRlrU-(=ai$K}Z z!nL+E7TKJs5E_`ouF}RWak78eJw{B8pW_OminlDz<4bklbtyiXA-T0E7|@8&IR%#7woG zLkST4SB=N2Fup;zbvpoF8*o)8)oNOthp^;JjOq}e;s`6BbEy7E3qyT+4+YP!f<-B> zJ0MyyNSIzhwrLOSJm9O^xJ7QZ@@?9ZEyaFPH`LOV*rUBezf}apyDgZcJm5A?b<|t_~^i*Ws{U zWj#7!t)gYLveB7>g(VW=9jYeAyV1Y(u1+!o-EaDs`#cvPa{boc?(LbCbE$cVnj%Cz z%3IjyztbgCTpKG+j(`>Ma>D5Qa~CT+&&{1|2BKAW0ckv@i3qv{KsMnMHm+Y0);x>U znit~r7$x)oMAp7nSoXC<{cc(RcujT$<*!3gdU znLg&;E1jL25mDZB-$l66#pbkkK>3~127x436XR9O6M>?;NH5-joH(4_^fFK6#CfTU zQuj`80j%$Q(uVT7x$Keg<3jnFp;31Te?A;4rvrbki_K`XV7@ypjvNdPohSnNw(%nK zSzpwzD;UZ$q+SW{P=lUlF+8k6kX@I?N|Q5L!hVZ{hIfS^hy-Y2(R+XzD{p9?32xSK zGd(SrI1!;5o2# z^}J?$`~#4lpd?PXT84f@2M3V0&F^xj=4@;KK1x#|Nv+6W@HT91-~g|aDM2cAiH-}h zO)m#BUJSBLKf`>`!b_YAEV|`vl@3EgSMZ-hK60A5Vid0QZwP|py z2pcv6Pd~xgrY^3J>GX9sX0k{vrfnp~RxUstk%P5&^z}yv$R`^4rkKA*nCZ>rAPHyfbXi8XO*d{6}>E{BqW_A2zCOILzMlCoF zuhPiD+Ny-VMB@EM2fe?*;wMS^x#JV`(?WV^PSVdO&`_j~ND$C}(%K(=PHS01xoMj5 z+oe#TDw?Qrb4;YKX961m`3NB_D7As){&S-JZrT13AfjFOU5aiT@&udF2n30is!Ttd z(Q5S~r~p!36Njm_)ja<>jjCygBkh1Drm8_vlpJUd%*zuR+ti7H=8=PJ8;uNc}KK8}>;6PzW7OD2&D`-B{rSk}G?q2Yr$`3BtBhDGxL6^Z z)q<8BK;`b;7B30+UQ#)NR;iDvnRS?GJ~pcnnOEX&%8e9)9q%3_D7=(Ku1;5!PnIrg z#N2F&XCN0)zwUVtew|la^J)48{d35m{&CCsbPXkfY&Z7J2L$-&-YWa4BAQ_CUeJ!u z?uXmee9Yb2H?gF^_SAPMgtooEyyj!0Uj(>D$*pUZs*A86zpGwm-`Hn) zgEkTV$VJSJ9E5Y)Ix-=^!D=)KJR195rC&~lLnh<%n-H9832|__p%}>*yV&&YR<^^J zf|0iq7v~_yMGGv-^ZiLv?<`1pb>O6V=D3;xnW52K_y>@D*P4*;D2q$SFhY&xA~4KG zA1^ZNAmVA}&Y)+Ll;4)6>U4-0DB^l2W?*JsEc_uhn z!}%U4_tLTl4NGoUrAm0)D*7b6_I?sxl_u_VYx;5tdT8$$K;{VV7?@ugXycEza!AxM z{*vBl2F0rVgu+WGT4a5+3UcwH&-@vLM=1y+mAHh_jKnIlMLP+H4tb;!9hs02Auv}E zlBWCu&9lhO8Wxa&64I$MFGVgqb+`PHkPDldJ53&LNy>&zl-v#*<9_6@vy77owb-3d zl-&u{+1+3%)9!lGuwl1^$_=|ERB%dMBV7X;r0F7Wk1@1yI2mh?K{Z>t1GbK&L1fPC zCgZ9PPQch=JhXGTB5cO!f1EG_dKO1gK|Omq4rHSehq#_~vrDEphUEI=Y2qZbbC_cNG8tVtR1Oe8 zeSAkybYgv!L`z|@jW_!#NrwVS6R^)VO;oGFk>xqs$ZDr%?%`&8hb<_|b2L%y)WiX} zT)1Hc0%Tl0@of(e}My|NTqZtVvq^O8)Riw`pr zdK(!@CXi?vWA)#lcl+UT5O8tC&jvGg1lcC3bA}f~;jp$?SI!00cHY50eyD|?C;cNR zy4cDAB)93LY0TZlGh(8&F%w3RH(&(Wp2i|C!3Y9<;$r9%T1JbXjlNW{@V0d7mTDh! z_lD!ytp4^iMKN1hr7oK$LM~MkSR#=4!-fsQU@+2JTce4%w9jB8yEgbq zdAs@;@jnv0GA$bfa+~)e^Fyy?454?V$byjg|5}KYgN05h>`R-8enps@dnjbBNdKcCxe)s>K`WtZL2PhQ~i{r{`|_0#`_ z{;Jgy63uUq{7-tQ5FkO)E&`Fr{}%vekytdV#m7opA%wJ5WpR^|EX(a+xa5$@66-{= z`(~h*`u_q)gP`XxlCPgZ!d%N@V>Z)JXB^@g#zZ~y2Jl7Ns*hST$5ZHJ4bM`H6hL+p zB*4lfpdqc)UZZC|G4Wi|I$^5;N6pp7Jr9=4>Jg%(iP`QXg0cN7b3OKJ7LJn49QHEF z%rjn>{QR9WC(NMGQ}{UkMp+sbQ?s*M6 z4Njy}6U{{LB~7LLHTz^4aj1`$UNi?roMS{o$0cZJE@2$&m;gah=+w*>O|*hbc>`=y zz*VNPO)X$)m_EGm&2*k|IFRusm?vBw*osn%uCDH*r)Sv8^i+D@T*dOUtOr!Kk9sU@Re%qwKK7Ga!KXb=If! zPf#}XU+o`w@F1fL`g7YqBc`)J=LiH@t_O>f7Ums1RlppX+bBg4NfoT&d><{9Jo8Xs zOQ%oxIlV^;sUu=V};GIU_+FK&NAa^xOz$bM-wx7A#)e(FJ$hCG34?71M+x3n!2$& zXLhPbws*?pXnY-6G@-&nfxy62GmIZ)}O}Wib2>^t=VQZ(E*G*8!%^BCzj_<+}q#NSV zg}FSskn`w5FOM!Pr}b7T7eHZkTF7$ zZn%|pNCEA}3-Zd=uj759-7nrXo}^2i#4X`;2SNEiK|4LoEc_o3N=Nn}J7NhJuLi{~ zaHxgaNVeZwX5v;Bt>&5gJostXYU8lcg>*sLFI#?Rnxgo+ccg^|0urR9<6_s^*DA2IlMQ@Ksty1gj{G!>BiMxUZ)t>S~qIwM!;2) zchD$44duN6-qx8&BSmm%h&%0M%W`BIXUaQO;Ei8Ge5}n_zsEG=BdF!=B$%*g1{p<% zVRs0)oXB!lH|~bYEN(V-91DnU&C|ZHIK}>b!3VU}ea;s?UI$2B^pd$t^R(ahJm|5; zZratw%Ch#l*D6NEdO~5g8*VEm^$S4LL<>|N?LR*-^w9#D0+&6*j2|4rN7c|r4XV5S z1{OJs-Ac2$<8NK8tN=k>_)jgMpf2=UGN_9#6;MzYt|x=K3i7diLj8R!`r8KSf#!p! zlQneGX6UDl@^6>O(72LYJ&PXXTi|I@rzkege%-k6dwrA2(^)f{8Z?jHoOPyQz4AbM zDBxpT-*zm_#)ACWK}0XK89i+<%QbaO!#yVNUH3zI?{({*2ls|9B>$oJcFXc9Zfy_a zQo=#!St6Sh@ny6<4SzgI(nwt(urW#czyd(xzy(23xzIt8!39d6g72(FvX|}vCBJj# z>?T9~+6eM1OZ<7KOeK2%DCj-tyRr56316O0EtSr5(RIOOn^Swz%sUv+fk%JGmy9L5 zK<;}vYnwhv~{q}@6ylzHpdE3?@% zY4x$t&|5vBi%5D8xSSpBMCOf;KgJ^zlgH@Myn{yEx+dVLNeh4EYw(@@ZZEw5&Pr0P zpa~$=yZl#_D8>i(_9NBBv%5?f>n50-0QCV#AJDU2?flU6v1b~TOC1iyCmvpLPIV|+ z#(wkf-A$P+a|55H#1r}P z*W{&uE4RBz@(9TUQg}r6=qDHC`76XdIj zsR+@8+@>r2Z0lRrn!B!DMht~pP)&2kHn#OGYsvjVm$&9yw|>dCzC|mp#i(qSrB~*~ zI(}pf9y3DOGjH|n%%RL=4n=1U+3qwiW~W@ct${Q%@* z&2`v&=$}74^PZIa;hT!TaQ<-bWWMycOqVEKmk_%wv@#@2tYGewh!4#&UNKGN|Gw?! zgQ$2Hu)o{xAAv>?0;IdM3i!l50N0+_wO(P%5xnJRH~L-Wuv%sf=vq&1GP_tfA3Ade zrIIKiqvyq4>rr$TMF^-@o;|r<3CGU+*^PI(a#7&=H*ux++C_z2&wl=c4^6&?JyV}P zf0zS4bhCyzqz@eoDj!u1#+K6&7LH{|$jnn!3|IEu2h_N+FPvOYjt}JS%x=8L<-`lV zY>4%6_t}em`;V$eD0y;^jV&8t;bcuCIEc|L?4d#6qTvT^87$HTVJ`fjYNa-yAXwo; zK7cezW--ytg)f&!eL2>xd>-}XTIXIKMSw7sar3CpYn`h+>XY%b2p*35REyhqZCp&w z;o&oBl>_*=$<7exVxp6qySdrQJqHle{c4AcM-D<>J-~Zj>$r@IMp%G7`*E|qV<3;T za^~O7_3>%MCUqZ<&MqG-I|+5lz02rXG=j`jfH+qRO2D99d)6z)(M4d;j)IboAzZf~ z{&2lw1VSUo!6hr>08I%WbGI1JN;HeC6K(4iwhU?H(fP;NLjc|3V3+U?uBTu(F;V5= z(`l^!R^0P6vdHyhQ!H=?bZ!R3(O{&NtpI8c%&tj&n~TY6K)i}Cj~uLhU^Ue$;3v_j zu}!5&BA1mA0 z0Z}pX!Ft7Lxo?EhF$q1w@wzCz8I9o4$u=IHD8-@hnY7STc=8{p?$XriSXowxUej)z ztF(rg){&pN?{PV+Drq&{w}1vqOomZ>q75@H(pu}1{u^9m?gj?$8C;Iy&#($dqdy(#QbDTHZD$c&r}%J=)O zT%0VEcuJ91CdxScVp&%go0WN(m16&)d0{R^2K? zv zB5Mw09_HTd7cr>UFaShe2XDvALw>}iQ*=TXQ?aiVX$?_EkVgR_CZ;)MU$t|#X_}2^ zOv~wFWn=btF~^ww#v{*LnHC}BaR{~#{(88AY{QmAI>wpuB~otMatw0`F*>isIDMj* zm|HI8Npkv``+(%3+a(XZ^0g5VW7O*}o?w9urA+_@eUWW_&%SUtRtsnD{avhVvX_;< zgync(VFq*WXItM>7mn>>>SWH`+ga%j+-k%vI5SN25@@)*c;6s4&3^6m>l9={X+t`r z-B^jpuj6CxGkFLSjCHX&U0rO>>4ZL8%Ry)pN@TC`+nr=lye4@C?~C1+#oYT)V>@Mu zVUEmRBEcqd3Kgi_(_6C*-;mGTugF4^c^8{L(MwNvF$aD+CVElN5!7?Ei%o9=bAh&1 zkW0nzQ9bht*=S_P>Fi>Tg}GH%CZzn%+fe~(ne63JXljmyl$})4gb)Y>4T{@ObR$4? z12TGeM@1s6Ao=H=JayV;FZ7VF{xYG5%)c$UUz`hJF}#KRRyD-8^m1{yav-fBWJ6d= z-VI`RK+l?Y39NYmS8j@1!;v>nm;oWM4MMlzv?*RSe=N5?8f5i(dyHXt_tG6`$DMO# zrY<->cRLq9#EvJ=h=psmXDXq=T==)!;OBek(k3D?a6{)}2apK((&J>8jFzc9IzNX; zE1W!9Z3Lp_#{$vnL+r+i7ItIxW(adX^dlN%dRai6EX@1B&u;W?^s^iJ8j{M!TyE_^ z&qXO~SBYJ%7+-sYg3TJ@_*!0WOgwhNbhi&;1 z0w_9vN7gyxqYYF=)_d!%0MI5Q>(~iGx34OJcv(um)3N)mG+H+#LNbrOD@)6e%$JXz zFpVcS3|D-j*jXrw)k0BZiw0b7pD50u?G`;E_ZHUaEk9Mg?CwYJDCD+pF?g zAL)lD*JZ}r>#0AMCfeJ3IQjv)6q^oCXNIa#nGQLr5aZ!nA>)2BTm?|%DT2o6VN zOPXW^{%?<*F!Mer%zIlyN|a>?Kezntjqk{(ZhaSnwu1((`p5|ccm>DR+SoGDKi?F# zObBz|Sk_4V>PF+c^7U7(haK3Sad^Gr*9$VZp56J595Ukuv~!#$YTd@IDBNj`mCwAt zZa5W2jVFlkJGq`6v!3&dea7)OPM9)hQP5LsyRXi8b{%z=>mqCZwNZf`LC-vuJ#@2a znn6)jmI!!+J5;2bMT$N)O+xmPB7~PH1l-{(C~qGm4#~F?!Nqd-6xCoy4ZO0PFWrHa z<(uP6HDJfv-Z^0=smY!_JbXMK%4Z27vjCIj@poXO^Sesw@~^KP(#7VCJ(dj)Fnw17 z4kbTj!4v*XZc+&gxlo5>Aa6=B(+Pr%AVjulvW;gjc>F_|E6C(O8!lg z_LG0p3Udwoo7Upc=igLp{e*uL&V5@5sOppcP2y$g-}K`&>EGm`SF{_y-hIL}KKxn2 zziHHOrLmBl#!C7I^n(67yk$ORMd&iVLfzK}crDRuyhvNM-K>5N8J&ib)M5Po6b#1$ zt)xz&LBNdK}UtZp;X=ip_sFqnt0@O z^3rWKUU_JQk_Q{tE=rmLg=*Kr3@-MPwUcKwVr_?SS1KoSF#y!_n-|n!0nh^2nJR7X z0`BMK*M5p#VQa0QI_zRi+;wiym^0sUvFh3f*O z%i1(6J9`2-p{5U9s~Gouh?$qc#iVLEg=W%)0(Uc+)(KKaEQbkzH-|g1v4T_DxWm~o z^Msd2!)vh6)a5I_inSP)G-cHq`XwYyS-w%;lQd=3W_eH2l;th*o<&nu9r`NPt3ybd zBA2}*ENO~d_6{Lwid^=Nu%sz+**k=!DYWdFBW%$WTJ@-vps7_!q#a>NQzVgg2uV{U zk#>Y7O_4;}AtX&9BF!9Oi>45bMy;SJ#_jB+84ZIpSh;{{2}(yQ3zf|~WpbahEjH%) z8>YE=^L2`1I37+YNE31s8#O92dxkgX04Yinhl1jCAR1hO4918d-6lLz!Dwl_yxLgt+io);+&o&i zhDQrm2cq{rYWO#Hn}vCA`^4V}YoMF0JVNm@Tm;vo1oaL%oOckxv`!=MX6$nrJX-iD zZNA@39CS4RxVUc5{`PvssPJ`}K@oxW1}d}H_M3oC)wZ5uK@<4a3dFs>o9Bty9M`;*?_5x&fW-jyvVPC z-SIwk2Zqgagz42lK8%=^8Hn2#i`VeT>(#^W5JTRR)av7}cba!ZGvCw99Rbf)P5`O&>2`ab&dls>a3%pgh~7cG5ksBj}%@lCLbfW<2M zB8wZ5u@r;ztADlDI_h9e4CVTi3V-x2SB3F-3A$=RJ{OEfBgB`Z5n{`c*3ek47gh)K zU`0Te*Yuyr62J;7zopCEm{~cb+3$jwscf``vZzi}mv@lsI_S7xA5U0A^8?Yl7326% zu}mlBU^k%t73%uJih!O~aR^LD2Px;#2+@C0SZ$eJB5)-&{$oGb2%QIH)d4*My3F;T zP?SgFakTAej<0$|`k+!fHrilbWd6fEN|!gLRnneH(j8?#k48{W$3QM*g@UU0b;r_q z^bvB!Wd7|us)IFf&vqV_uV<6?b59#*lMeIf6tW!84~jilnjS8uR0l+1MRLDmBCSs^ zP#wL_K(w#|7x=gmH)j({kPMVZr&I?#`)Xd{B4{)0xt%6uedp1_7*nO7>!`E1h?I9% zSX@NPyLA>9k@D^ei;GBkw=Tg&EO~bYxCl#dygI2zSR8MK)FUj8S10udi{q`3dW6OC z>MT7X!SPl=pD=#By4U1lnwy+&3lAY>)DW((*hup4`zK&No{$T0hDSg9csb4vhPb8d?Onn|pV6nyC^h0THxzF*V{OzD0|; zi_MB)UhoV`0k8vsYY7^IET?4@>$zLfsofydyZh(aij zpg69HAxF5LJ^w4~m7r)gZhZ~k474EN6}A|AT02e6vl9V)?ZykOl4rwf_DIc6qD_J5 zy}bc(@1yV+TrF8$y{nEG;j4MA6b4ixFF)zZg&6bNC7tN9fLJV{1_}+M`4X&}K=khY z){>z~h!DAGC1;L0OSHrC2}JMCVU87+cxNpkOT4p|kR{$(ODG}UVF?AI#Av&iV+DS4 z5v=2Sk;&Pn;6~nalIuK;&jr+9v~V+z2E7E6@eh@YT|E!=wC#HjkWml|;F;yB zUJQKd&`>T4S96hhC?G1F9hm`9S&_KH$5n#>R=c^-vF@;^t7jGmGGYPGF8JVui2r44v4ko_Pm^1=1wtI_09UH?dX`Vrs2Z zl-dtNb5pWy2YjN?OC5}G)Sg3{_&@BueSA~p-9Mf-DO4<8slx6KP_r4gK;7spZm^&x zHG%8EiPQZaT6?y>0xZpwp?X-l6dv;`E3OsUVO zR@M>}3WDeNdVj8yq^+p9?f3ib{=UBbBTddZ*TcDZ+Mx<614Gfy$u3Hfg+Vqrq)Rl zVE6S^hq?`^3>3}W-NV_mdf0mDlIreN*t7;!l&z$Qv#VS>o6=+CHt8iD-3Da@M;JvU zEJMSKoF#n1oQ+%@;Y@cSbga-?ZWKjZU&sG-F+GL2FO3HWJ1R z*M{-N|{0rI411Q4^s0eC(E%DrbMcj`eCbwjm?`|}0EvlAwareVA zl8Bs=9r~~9p}hrAmng?{DB|z+Qi_?Zin2AT=v2h8gNo2_Qxy%oyoMHDG8eSrPU~MjG6;2m zRluW;iy7_2b?v*a7nB@)O+d6Ztcdd?AS0qJ#_TJ=r(guP#aJf&kSAHXK5FVQ3Q;P+ zM1eg(BHEb;6yz-AY)qW~YS6CImc~{1A%b6CP3PJ}ctY=i=}ydWaZP~r&^tO1bQt$HDprVQsCDdH^sbH(zwp;Nh|@ zmf#>&EKbm-sV-HNl|ZDQuef)pZ1S6Qo(Gu!BzjQs1X>L*&$95yvqb+R&w?=zep?as z(i0}icj-J*iJO3w%&taQK3&3tJ`sL~)DsWk0l)-_X8p;rpT-%cv+-M8f{q`g$)U!A zIpOC~?84BupR?1dZPvg44Mg_VfiO1fcZH4`NI)_eKSq56As{n!HZ!V57CF?&QkPgw zs_6SSBIYZM&&nwCH_8j-9RNSi#FDIr2NIikV8B9+FVW|>OTjI%MB&Wg(4VQnS`6sW zt(faGAa?4nkB3;MI_Gn1Xdbr)=9}Xe=wKCJ2TK|*!x?=J$t4d-rn^$IYnl}GhM)6o zaF%t&oGoi(nGbbx5i+JbUrUW?#B?iw-obdoInY5JTx-6ynYG^M~sI}yDqmSlvmkyZjN5>?m z+n;;LD?U~uw|8_|{kexggrV}$hF{tButk6C)owz7KN}%^%RLrmqH&h3R5cP%xHfdz zHBdvfVl^z+Q)Yc+c(+OoYqOWRUV)D!>~t;)R>Tec{PIuYt1nj-{*`fny**&Ua{QY2 zGAgCFKnF-B~A+$p_Q;)=0KO|GJ_~pXF;M3eHv=h zhF@|qdR>p@duk`d2bn?#@pMof(E15fHU)=KSQr<(lyKChSof*cnyxG{*>kKtFf!^5 zci2>`zeKfGt5%=Wg93xNxZBZXRm7)U_<@?OSjj@rD-Yk}+)9DEN3qlo%WH=bNA+JX ze$mPR-JXvPk`$|Wc5mWvheJ$b@^mkCCQkQseZcA7_i$hQGB!|IJJ+Tq4tRC|2mWdt z?p*BEEeGI@;$LYJ)P4Hcksv;FW>VNH7iEsAnk|L4MhYCD++`bs=ir!VF!|@uZE=pm zWDURuFv(LWRtibwie{UJ*J-AMK{5_;f>lk-BN&5#cvtct#CUv$3B~E{;liK8!&}Jx zCU^}GKQF&c=2{qJUe$({){{E9vl}L2QU~>Mzq$UUg!_#u{G5v!ZRSI97o3oti*xju z-^OZe=8-|Vim!&hjRG|5)8i^vc<4vU9P(6+gzVhyAJ3{@J`RT1u6v zBcZH-`y-}72NV$Caib=J&uv4gDc!dk3$>XT%XhJpa#tTU64Ga2jZ_Rvl!$`lb4Qm%o={4dgd^)65?*q&Vq<$Zu zSRn8t7)9y>Tv9Pkn9@=!?vh$@IFd@;IYJw8R0<6S4R~Z#+)W-?FnlBtSZ2?uHF;Nv z*qQoc<#C}Qat}CKMcfZQRNlO&933Z&S;@L;m2%Cdt*Ir0*){lQVhWeP0Tal*C` z_4l9q&2xzj{DuB=d(rmk{pa9s@`t6L<8RXPdmNg*`lZXr-{jz*$=@XFbz0D)@h|Cb z^2XogPb_(S{~Ujlk$*##&H6E=*sHP@*^wAHGOC_~bDQnzI!`6XAWHJ|EcvF)&f%2@LOUSh3~4m)siHx9bLmnW4;Gx_^A}wcF+$>0Llj2!U z8IKOB5^Oo2ixYm$4+q~lE1ByEbDiK?013q+K_~Z$*Zp8#ZgbAlk1gvl@Fdp)ZMnO3 zJ^8aIcelPDKOrUoKadN578eYHj^D0EZg=nozsmskb~!$mf34Uz;S%riNrZ3Z&yrV{ zeL!AeDooDW)g}6UCD2uj^LGsR-*{0-PmS!p$o_#M*!ovJTo z1F9#VcE3vzbv)uHz<{{D4Wbftwheq5Z}98M&a&0;Uy~gkCTnbucewLB%qTU_Ru9Ja zh`)nf*uVY6)3SYCw%^;=-p9o>JGI}VMsBz827h|8{pDH3Yh>$Lvi070>s zEbrzKzlFxX-}@(@HyXE=5DV>3*GJ#kV+1OX2Ge-N+LfLdXA-W09yKz5KC}DnEYp+D z>;VVM>EX;Cu&5Ci%j5-6eRYn7yI-Xd zrLB62PS{`JpLxPwxPL9>7dMaBQTW;KZ2idwI$I}EUafzsPe{k*I+ymu6LEO$rzE_# zc*9Fsa&V%9Ilj$V0?U`jhy7%NZp*v|`k1eMWaKt+(IbvS?fab(mr1qnWoMaRE?;wK zt;Nq~zN1W-=3=YnBGf5iFA9ih4mE)-Qe^V#kazW`M*>&`f*Py15H{_oPqZnBU|987 zY66c_?8V-w2&IB^F|l2}@HVy&Tfr{0_}JLD7TGS1c71~&&}Y>EAg>ORP5mOc{zP77{pr zejmp7?ZXC$(Pv!LlWc!^i6XqNuiAD&vhC6zoO!$RlI`yRIb%7XG6bFHxssL9;GA(~+{l|hphCFx z=kYi;u2BQf!hn0GgH_#p$}r;Cg27q+aRm=NM*@KUHfVOhbiR+n5Y7E7G+G2Jh?|rz z?9~L6V3Ct6MqOo;GM@OD?@ewrDDLGhR<-G*VI(&xM7mdoe`EkS?x-SKL@#X-IF2E( zC-Z}~edE)-^SSss(qm31RUSclQ|98f7z57kTzHYSE&4vvi6S^kaq-Aq3n6ca!xHa% z?snu4#XZVAs<`CkOfT;`S8=z5(o}Jz%gQ4c=oj2c(gdjdy)kAFtpr5dyzq-a?+0nF zay~9;^n*@d36eF8@c%2Ggu?IE+sT)D{Z^coJV#%?vD?tElNbLMzxY#J^va8yw!*i3 zA9OiwR3dwm&*hDzz5Zs<1j zS8tNZj&CW zO@C+uxU-QMxN7}I`S5SIK4S51p;Xxzj74Zx>0ggNC($gc_^ZWYS!2H6;)VJJiFbOu z-#d-jK%>BB%BUO8#w>=%%9y(gpsK$L2@jC4YquXN0hNuJIv$_bI`BC=OK-T9M&m}a zPLlb@dztGsFLUi7r5X*LOsfUT4tx*FxaH6{{3ZUDtnymJpbqFuWQFejZ(H$~ZbP3f zZxzG`dBI;2gM5o=Pf5P-cW;f);l?d;l;s@$5H)4Wn!dI55p0p!2pPDRA^~}_%NS)- z`!^`j(a>-7SAR-xoc9`bG|$mH|J-fxasyD4OU9Wr-n;cU*fEo~U$raAn%AN;al#Jg zt1g8SV{A>qihuDAY#8W=Lf0g!q8NR%s@}F_Rq^i$`HM7Fs+Kl(6R{WLH$7s}v;RPB zLnA=e%jLJV5aS+FKyB{Yy4fuiB-<80E~h(O@r&LzrA1LTJ6e8Z@WhNdM{ z9BI|hQfu4s&+O%o+8}?N)kj=Z+fE}cuKpkD+a>7`O(k6i0R-WXCi5-ir7PiRL6UB> zO^sY!!~vzX1QX0zI2c`S3f1s07wgp!$r{!0tAqW~F|BxmrY1v=tH zZ;k=1J2E+>4kf-Q;&aZ2JP}ySCrov*Rdyi6BQfVa@2s^HuklyD!z#K+VLvs_2sOgv zPbw{m5n69I5!Rxi44>$L8L#tig8)2vK#j~5y4ndJuA`IX)zqn>PK%&%0 zV2dv@oy_#>{gu0sO3GW{kBq8_4>GV@R1qeeO5u^rQ-zclz5?<7e}#YYNdBqf%$bpY zAOGZ${L@!x``^Gn-4I_&;Ga}+>v)oW)&#^SYUK84pz;t~b%Mg@Xu4Ff*uw=+=ORB# z6&@Fl1UB->j7Bx$e_RRI=d1w-XshxwS37Y{-|}C2pzBIMFi4*vFg9|E=D#%h*&@jnRCY;} zZQ8{)MZIiOGtX}GvQ0HSyV1)wA@P7cV=o}yGg`cCQxngI<5EFJ3(eETq{pT$8DnD7RK)X28 z`~HQrUn%{vs>PPP)_tO=q&Iu7m1TVU-z$BGJ(rI8Dp9LHQ|!!79<$+(Ed`` zm$y+ge%?ohPuvKYQZnB8n6HCmc|IWw z^F;7gXyZ^OU)6?A{L3SK^b&ddPA8>o`F%o4fu>dqhWDO=0kce_~CC%x!-qkhp@z%C`qSu$BFV7^9pn-@T<{_anq@j3$j_Yl`srS}?! zzU!ww(piTzjNfigdqf1SOnW2#jjr4%IJM{10C@}(| zN%S(;;vO$^-Q7V*feC29>!DuX;k^!N?NxD@Yf}u^{PN+SwURKMBFG~jp>$rzBY#VE zIsuxOIVCQM)o@=qFx4dafgGX3BMk-y6Omu>0D9CLx^@Vysd&-FvVq6?oM4gho z4L}|LI0TiN&&hpk^F&v%AId*u_*J!O1_F#Ko0es9EpW0pJi!vmfPO99naV4p%m0zv z!~s~lpR;N0isns~I^-1VHP1TTF)*D62y*f7=< zhsRq&8H&-w!+L6&wD+NW4|DA~IeE#qpl{h(DbqSU^zJ@k*1(iUU0Si4mGi-Q3%!w!L4ew!w<~u*&>z zV7>F=NQO%Ze_{mBnX1{ci~W&_lju6x?CMf^xq;DTtG)-{d_fqBK4*ba{vj3ya7w-- z7mi$9GG{QB2#dUN3J1hQC$>ESYujP*%Yu2tfq*F&ju#JNWxR8x5hORt%a=+WYC~QY z&1xji&LgSIFErO%UV3qOqSvxq>WK5wO`Ym{TqM3*bECB=#xAtrDm`!NloQX$=Yf@y zmqq?_vi%sdUjxA^1)2oADr!`*i5e+s(0>_&E>h1q>6IdsWfsGg>c5;XpZEKf&MF;?VD$7|NbSf&ROiJGp*Sdp6EF5f+q12WT>-a}7z z#GlmZ$zFO=k3ZR?7)_xkRQGGxcX_>m>>4F|51NlLyT{JM(exNA^7K+2-~xf+A9|bO zpDUY!-@X=BIvL~b(m#N#D5mC^@!ie3auYI7Y;zC}MBE-j)|mCM#uUIBQ#m(bjWIJd zK4B)4Nc+=?w=6t&8;?|WFpDL;m148Fcy^;5Qs90D?SPA*p}8tLVSDjVG@ogl{KX$h z+AR8mDMoWG&Cv*Hv(?%!KI^|J)At^PE9oa=zzgsSqj-&!wIQqP*IeIYB!5a<_Nk5f z53fgXsqa)HAzUxQnFWpXE%<^|PKLGgIcU%eQE~-s#zs}tQ>2qj z#W7lD4n}{nhLB?J@`ZazPre%w1F@xpLut&_0LT#}D72qHW$#)N9Me+%2=|dtBNu^< zl;QwTiyy5gOt1r9!eSv8r3V;ciuJFGi%=UE0RU^&q4sQd+)#E=|i@f>gn z9b^u>3RkyYL^KoL+X+i{vAIf+T=u1x$!dDh@8!aQnRGKQ#dR^{32^EmXe9ckcdnrM z1kZp82I3@`2=EzL0A$Wbh7T?@EN3tiowK2Mdd6J%E_30RZ^Op$UhkERgnTQu`diXe z_Bg$F+)lUFd}q^6wjREAL;x-%kICssbqGl02A^|&a`f2h$3G?W+{8)ChtuF8LO_mQ zXJ-Y7jcK2wps*xeq|`)N)C}euJq4a~dgI!5jQ5ldUfw6}Pud zoV|u5=ly~`2=boxX-hSQ)J%S z7no4yV5?Tc&-+5;CB+GeBu%X126}*!uqISE<)B|peMmhsbvNZ~>~ZSDDAV-ydF}Vp-24$N(HR!(YxfE&alOqMx7$~1bJ>}; zd0Ly-D%iXzQ0q)bZh%cGZt|YD{=0 zdRbuo0P!JfcB`#AwQBO7MduL%1)KeRYG1D9H6IlX$r?%YndSdOR-T4^thMr$1EfI~I z!5jV^8dTG>qGof#(IR0u(bHCuCF1+N3CA__kBf4tV&|?S%x=5Ck82tIaZwK4d*X8P z`K-@--mEYE^!I_^2PJ|X)IoxUlg?qGKli92boeNV7B2S35P;D^=R9mQ|9KBv2s;pXBsu3j z49?ak5pdId94KDnAkgZN*1PhYkos0nwsPSnOb{-o#mdA!2bX zJZ{3chRhJQHOQYzXWvMu4&_#END?pjH$y+$2zFF2mnQt`P3e`Q;!K#R>GwQi}v5Qr`_9=mT`Ak?Z0_&1sU#eE*T&RfIc17Hp zrHI82McnOz!pRig$$xS>mV)X`zjg)>e>k6u*R}!!f&>?R)sL_*D3>xq5<`P|c-#Cr zvum+-=D`)d0GcP67<=n@itr3NJzyTk>-X$4j9dadi4tbdP97=A;gJ#-kBsM$l62nS zu@ie2DaqoI5{D{u{VzwLJ8d+OZHPkA-L*`+pR7p_5(JLYP<`@*Vfb?o1jJj2&~vDO zHV1nUF3YimGRUjTkU1R#!tdhRgLE6ok2)wm$)D5r+71e$kcp}+0r3f21$=|#`8h=d zPg%HlLlsNX6>V7xcQ3P--NLmEP&O&nPDQ)qr^N`u2l|KIcj9Ki%0IZ^N3Xy$Knbc_cD9wpGe=Lx|gH}FOxODnGeCy z%-HZC)s-RZT9~dz3Ubs)fs02ZvQ~uKai}}g__!Gjs$0G#t8$UV{ium0Bu82)uO_u& z`8LuG8BrSCzVlG^^G`9MikOjuK#FE6E8B;lip$ zZ1vo*24LwDd*J8t0^y1b4pc@%ub>Trh$VP8xo3FzLl+RHE1QBpLo+$3+mUO;`DYpx zZB`DCEX_is%=Zw)Dq55B4J+Udj`oadj9#~CAO}Q6V~k}^$)e$Sh^FW~09yYU-Ecth z27Dq{f)dC-&kXN$Uj88k`j3vI_;u3pIWM`9k%XAJjuRv+5QX>X&s;6VTS%wqM>?As z?aWOlHfZSe^=mE6)sP!S>KL$}Ncly9+{jl9YfcR%Ir*;`D?-+k>eGa~L%)^!94#hm zFC2mMuEtqHt_OBd@Sj|ZAdzS%lBxq>6Ol)%nYIl%W)M4o+%go+H2N9Z#Y80*O0;xd zX)JTZle6@^96#?P>0DbO*Klj-@K#H@#iAeEZ5Z@T6+QX~yK#OH#QE_Uvp?fRFc}G0 zJuT~?rtynzoM50n2iQFXccLvzSHe3C$UnfgZU6!n%Us^8zYaYk{K{MPMP1Ni?SXaS z<}R%J25@3AX3u~<=kStD=BoF?0z?EvjZCbC5G%#!{R-f88oVz;O-T$~d_5KWA}>tF zOF)rV3n0w)CFcQu`mADK~R+U27C=}siU#e03c|cL9N`4(a7a zBdbJyX~g&_Vy|v=CWic@P8#wxXE@%3q`eSY6iGXFAhbde4Swx5XDTM3-}tA0?)c-* z>BnE*={x>d8MosMNBn3$w%=_yURo6Ks-E^96z?}WT`=^ngr}&g-8*QA#q!)BWWLj8 zqy$7G`h{+4TT`KkiR(kI49x_rda-Xp>7-9X-26UqQs@VX%c-G@6W?v2^LV&AjfWeC z@bcrJz@^W14d>x%TNmTuYHQb7FqL#!aX@LdA&NN8Hmj3P79ZPR?2W8M%Ue;%+;7Fc z30H=uCn`S?@+ZFchH?|%kA}XH`2JCd@o;Av4|fmYl}*cEMB|;*cqcX9NsTw*d8Ir` z3$>g~UDOX=UIRj9cBl7a!%&Rvtn!^tG5@dP2p>&Jn`Q1-9Bp=7{OD@Xq#d1^l>M0w z)RLTl=neph!wBX9Uc~{-1BW7Z6tl6DvlcN0wlgG7QpIFf*KmC5MXi{q$&_Hjp#YzY zF5HHPo^c{dRbekTkOEi{p9aMH#Ydhbo71I1Asg53g8jqN=XWZe!Pxb= zX2m4)G=~dlJlmK3kK%4zehD=fwA>mR4B^ZSD(&rX^_^(nqrvg(k&Ll%O0!_xNF$z90H!G0rEf0aWG^cL{-r|sR3=) zDMc$u<#Bp_a2$#Kovz!m*U>N{8Gvyk?3qX1xr%HHrX&2 z+fj*816zpV-o0#pz+JQads|=_kclW7QD$)QRgsKIU3Rv)y7*Xo@l_GqBzi|( zU-pUuWZ!pLRUM^PDsqkwR32J3st?}7RAKu>F&f}(kQH#BD(wc?Bu-C-joArbko|gu z0-mPk=qu<;v#w9YA=ILG(0|qG()UiqaU^Li)-heQYZ&6>c;2k?Ce@pv|08i_mzr{DGPyUu}eVv858e^=mxtNXJ zf#fA~_b^vYZH&#`)}H}lo2rZ19j1qOVcH=Z65h{>CLTgNV;dJ)FOAk7kpf>@6FoCF zZL95J%OdMWqZWA}Ccd~9m=KpFOUgfDB_VfaLFRGHG_%EUaX4w(A#N*Q5xS4Ln)F$I zj4lv-SjB4+*);9y^B*CeCeF)Xv>^V1mGNQ7Mo)Ko^!Z~c57=c}UVu%~etu5c!-#X( zjiKl0XUJ|&)I+xr-*27u9n1&A&>3wPMu<6S`4nA_`RuBI3(9BO-J zEdekjE7^le_QK^PQFc&_%{>gv{20pi_;ZiOSm6;a8ob)oX1tFY$x%t(SZL>($D>9T zwyTka9cpBuu0|I2sF8)e+-M55E8-2JPgsh;v}3MnKt7`_ef^M;lo$ovg6-g)8GxiH z{{%#3SzG@U7Xi^i+)z>;gNuzKS^}clSv8oekx3Lj_xKVDpL+mlk+k6>L|jWm>F6K(ebTXZng#^gIsh^d|1Daf(?E`H z{qJ|9%4YqYKj43>UPVo`>K`raHuNj6h=vcK}I4o9-+KAozW!?l?qt`)8bRbA@7Q!B#SWMqvQ$>1zOm zxyVDosn}+|^G|J&RorA&@$7&qX2h$Y zKwb1cVGAYbDAhS1)oe1WxxlREjy~1EDtb-~%?_CYfko;bvxfIAJ+-cLN~c z>uJb<_dhyj;C!Z&$0di93w4}Fe~Zp3bzA|D_{MqkJ@^@}Psgu(9{x0|v|ZG8ErO=> zA}-XE9{p)q;3Nv1^yt6CPg0VeoOjpjJYf_49Ttu@eB{db^4HS-`*&DB*(B&ua zi`m!@mbjSfRp!DQd;ssB`DhI%0z6~*l5F(gnN#a5UCv@Qb`J>do~|}3n8sXnU5#}0 zW#+2wdXc%BW6b`YD>~2?C>$!SBSQLG*I?$_A7gW0XRaNTH0~8paqfz-Laz&Si2z;; zn`10fUW9O7n4iO3J7TP$P2SxTW10DMgO5kS@hAw!2&Kk*!zH%VP!`I~^Tb%;&pa_! z@Lr4+z8zzk^E}Ko&dI~uvJ$Ip#||#G_05d}q5+jvwbA`P*8Hc+d&tOz?>w`hVQVTpxft z0*ne}=n_+1F+cUQaCpv1j9yoa6@KU9lk2eOcjJu?#C)u97dYEjLG^KIXN(nWuiPEX z#9(__AwCLfeB`5IPm4YQzS02s2m3{EXu{DkuT02mCl?UOzRIkZY~Aqs}ak2E}9 zR(Kdy0=er5L2!*{uJ>^H-54u)t8#acG1oTPGApQOE;w>xT^&QI4&2xkV+F4=*9Z81 z2vxf;R$?L}IjoER%; zCEpr+V09F|WfC6|=G3_;Lz2o9HI-k+t*{CrAr!A1-EN58}%w@R^3DsaDU~ zHbU~%UgmmCx3jVXT1fC_6tp*Ka+Z0HD0>>Vt4grAqTks4oDR4XRaI8 z_?he072q=Iyev#xGY>h!=BBNk_i)k>X#Pq5@478LNa3{L2MMpZ4$`Nm{d!M=6jHu& z;dPKJBp@=v(ZS4h7_P?Ex|O@z7oQFPOX~roHtFTsC5Sze4s2kq!s8R_+iBjdvw`-Z z-D~>Hy?+mp{2u%>BeXU?j58G`RPu!SGk*5-ggUa2ETTU~bcm~kKsut(kR2fGZ>hAo z^701UJ0m}U0b|{i;Q~i-o9jTK$~cR zqTYydcU`FtdADaGX`D^zxB&t$>Ld9CIS&w@IrQ$w!O6|VS)R7worf*@pROHg@rGX_ zH$pI#sn;W28QelITd)ia*Jp`UKdLDkr!fa(18qLcM}yjS9NVwc*dA zRnelK`sA>oiUt$bu|+?X(E~Nf(9j&pQmGG5GqWic9z!OcNpt1pZ;heshth1uT)o(Z zi^h&b&9|1rnYAUxGNqv?#xh@!Nr7gjy}TKTBr+=`cR4ePui)AB;^WvqjlfvB`w75q zg+|7WZlpbL(JOp_ZENYgIz?uwZ}w?u+6=%V=2{w@yAZ#qDpT6+#ULpxzc-(4v6w?I5)g=lMFQ+LsmUZV3L2o zb_Uo3f`Sui*S0235)6bAS#0OxL?E)5w5B=aI{`eyDvR!T`> zd3FOO9k-En7_pA^=3auEdcsHGh5bhipjSe~g#8un1i4K>Q(v`Ry1%H-5=zYo0j!9m zxf`7Y+}&Er6j4pBG_oofBl|`)GP~^_QYRszy`Y0YJPQe6$BOkKw8rJNw91^dv60c84e)2CNU->MdvyL!(+J--_wbb(X7}lEig~unE;H3Y| z=la`_|BQ9Fu(j2KU#8#c4K)F4G*9@Vwm!@>@zY<;KSvc2)Gt!J5sUEJyb+I$i}JM~ zrxA}G(q3+p67ggy!kex{xQAAPBD`5L&@I!0ZfD?%i_L1HyKu(hIr01By%Usi!E+Vi z9iLcnUY6V zTCcIuC2JMYql&{oS9C}k%Iv)?)4!Qz1{%U|TSJU!sy?Hs+vwDQT&!JXz^Y8A*dI?B zh7la13gno+#sM%MNYK}~^oyGy=p!4-@>~jvt>7ped4a6MaK{JTkQg?U$)p9`2$r-j za?=7H@o#{>3L8xSX)AWuUdoQr%On0@>Adxbq0;w1aHE-3%!DEYU%n5Ia-*45hR%k; zk65J{_hE~s?L_q2Tt{vcuuT5d&<>2}kvaD%6DGOXsz+eO5;ra_Y6sNN5&uDgQMZE8y3oQk+lAa+z3gm+Ut}ModKGcCYl>$37OoFb z#hYsOd#H;G|D9X}ex(8#(C0)tc`o+B;m4uh^vV$+Fm=qg1TBD8_mr@)7c)#&H!!hNup_Ol1C3wNbx@ zQ&}JV%+wn)QnD?>bGpl4H;%1 z(f^VCS{_O*=Ly?mRHIRg3RU+TrQ118i~oJa`f0$rPce3|%3o6GS&?(RDngH`;-=-Q zDBH)y3@oTW==beEVu-*3F3Jva5n62qk}_XoB(Oj+>J_6^jf5V<%2C}%Sk;SU{F-y0 zDnd8Ys#mbKt)G~iqU<28R`+pMbpi5Rin0Y=S@awibMEtrUb>A96!9-m!Y@e-%{(sr z8v^2L7uSZjE_uYFShp!=<~08X{aL%Y!BB2am=DCgdj09fh5&vc`{0%T)yB*G3fciCuC(b`#UR1~pre zw^@Rt6j9+sQMn)G3ib*QHl&zxgE|C@{fi&Pj-*GiBjuwb``0RWxmQ@?Phv}cai!Rk zLJ3!UlyFq;Nk7nO#7#ji{5Pxay=4Jatcbs}B6fdvZ=Uwm@`UYIR5k3**qnPyo6K6V zITfRoRW7HUIcK#hZeNZKCD&}|PF0lsfyh>?uD^Q3ptMz$Q6KZY4+^JDpluVptk14l zw-|9_QEotP2MN@d4+S=M$nF#GN6Hp-rQ=-fi1=wwz{rOs>z?akRo9(@k%IQ#wTqLR zvnIrdrIKm@yy46V8eQKoaF}ZD?pe1#i6Kv9Dp~u!zWO)wZrz}j+&rf({ z&OV}_!zKNkqS>xA>Ev-W8`SMSlYD-c$f_zj)$D(eTUDHXQgWL<^b_#v7w-gp1HpWs z_SGW?II{V;`(;#&y}QT@-N5XscJSi7x@m<9uPZ~>{p36CpIn5-mAaAJ3&3q zmNU?Kl6F|&W<~QGTs)0EMzqsf%h`r{MVojpd8s^2k4ctS1eUAfXn<`v77$yhK=pg6 z0r4*Q5mo3QsKsl%;WE(EApPpj>nmjL7Typ|{!h|VRouQB1I9%lPFHCVO}aYehKyACRwiAgn|)8E)6>n|79)$o4J_LU{catWc_-X3x6x9 zXe6-Nq^A)a5HmnbgJ&z*0f!`{4a{D)nb?uudJJ2u-cx_X@QQmKbTCNnp4kHpkVwh) z$TDAqKmxZH_>B51-$9rr2?i`vgOK8lRHAg~Y=q&a>>!y!f$y>uKp=!e80Y2NAmDiC z668a_zZkO*-}3Nh{bQVOud~2m10wgut#vS%oRNPF)R^;-IEl?o<5NDXKL#_CPQKpK zk3b^diVuN8;e828O2ie3&VcCU;)EIr_2_p^wpdhm4+~$P3KixdxKBiG@6~@iSuzQ$ zzL{#VOx0}Phi5?UQD6nGIs&ba#H(%1J)rN!quKR{0=qOU!3f)yPZ{CM=W%!evWzB z-OjX#`4au#phz|~9o?U*4I77!pbI{EeImM`YU4uSk>alquzpNE*$cSuTl1-}=PBBC z=%*Zdwx$x)a?aawB{bw2m8&Hg`~}@xM`jr4)_Uof;w2zj{`uWM}xSWg8a!EL?zJY046u&SGBc@#Mp5>m$X-nrg6lMZM5s zc()*N6Z&^_9R6SHQbkMRqAGgzH|TmVI0g?`jfxWDbXtiA2_j?FQ&TZQFu%0w`9FZZ zu(fkGMYlcWMDgbA#Vf9Z$;lx&?(xYfm0xl`zDWfgGak>Ou;lz(=B81rT= zj&1OYp>#m?AEuX|>hR|_`E#RO^A65E%GZV88mwyLQkCjYt;EOG_m|(z_^^OA3M4J) zr0!$0;G^Gjr<3rr`d&GgaJ2edSz=SdjVX#zt%Q%KhrXT1Hv90tEyz2Uql!9(_HZ$b zVEXS=oR-uziKhpRtv2yK?q2L*RY8JsZVHasigdGzcAeoJ(?r!MdpZ=+DyvpSovdtz ziU|%n$8)2OyKi-|s_n$rm%^EFUlumhQigUMWQ?g@BEx9Zy!izWAv9O_Z=p*~3) z3tIHk4)v0n{zJVJD2luNxl!!BqkO`(4z>z7GO)i%$Uy7ve{MW^czX&KOt?2abTQlP zn@&0W29D)*QxUyTPrAO-jph;>&1ld?qe;W)9n+|aI=<&EMYK}Air6d1@~o)?$Fj5E zSV}$PfYIF6i_zSvzwnae9h~E6ujr%3Va>|r4YH370xki2h6}le$XeOOU`?i+4|*Svuokc3dfr}&w*8M_0NI4JGL4&cQYwL(jV$4 zUyu7kt$j9ewh$mycq^$u6mgg`CF~CkmOZ+hYZ3)TY*)3kUy9HAL!C40%>1Dyq3zTA zL)}or#RCv+xiuOtt+834((=_HIx}-vd95icNQ6yhpF-Gh#cWoSH+ohGP`a zm%Th$g!KR0u7eef6w;#?ZegQK;1$E+5VOW~h#CKkIleyUeACNP5r^T%g2UQO7H^u$ zpSh9DdUZD>y(_EB;T?Cypnl$!zTc4H_Hy+E`2aV;|M2kA)Zh)w)e7sZ`u+$Du2nC+ z2KM+o_>yY(nT<@7jm$F}0Xm7}?nG2FjEtA#iMTx;D6#qt*N}O1q0M3eM%}KZsloG^ zs}-1Z`oZ_&jSUHohgvm=<-}^M|k2;R#X~}MFL4UO2O+QJx z2}G9S-KUtIu;^KMX`-V^&%pY8>Rht~y%_q3E68k3W<%2@w8*(oAO9ZwMhesBT`Bq9 z`By${(a#=9PSryfUx6TFS36$F$7Y^yUANAn4>C)9*DUdUl-NIFBn<(AgxZ##7s{05 zJS3FPMP283k`C%k3;RxeYqEC=+;g>lYflF(tzK&{Nv@)a}`cYW@<4X;AUYBeP9(v=z512IV7fEwtee5 z^6W-}Ygh)W^|s%RumEPV$23RRs#YM~kv~*Jj1~33%jj^772rz|Wi5|9K7w4e6*i^? zMd3GI!=|U*zIB}?P1Zr{mk)~8SU7dJZm;7f)IbC{}oms(OemYQtc`S z6-Kr%@^H_t4~Tl0T3mfgI`kK%cMOAz_-|jNF5O4VXR@oW?}07G3L3bW+%FFuE*_*N zau2`*!sBJG-RLLMB#`@oLw|jrVTfPh{osb{i9CR>;#U~y$OHJ~k#!^kN7jKhf%VeA z{vtMeBNx>mbhOTeT;CvsGEn4E+6QEfmK)Xu?pT;-1|_)5-J!Gdq|X!y$IP|35ip5c z;3Bow&s^88gilm5be;Y@*Us=>$ICy23nJKQu$f$>{r)eBBe^7TBKDkFg?n!qqRq zfX8tA;AM|ka(9ENTrvuDd%5+IxV|d}Q@#PO(Vjbxgx|6f)7YZF`xYV_;cyn3mh`iF z4Bga*ubh)yzC489{=Lug%?n}q?o6ESggaF^mDWmX8qD~GmtBF^7%kNpJ~sL(vb5uH z`Odie$^GfFOMXb04A00=6*^f8>-3j~!+i+uL2Tyb)xTJ0(bcm@;@~J|--VB7&(d>4 zc8WNo)3UbnPUvJsoq1X|>xbTtpO($~o6mI{o!8kC8w$b3^D%w!^8)K1d4fFoA!p!N zz^RF3;dJa{nGwK0&JBV=!*N0Y|In~d5Cm2lc4?h?#5U`H$-^$a!KI2@9eCX|Z7H3z zO|bwQ11K1oH5S=q-@&DK1C@v5r4DjwWQ7fEdRoCVbmA7k5wxIA|M8>JU2$||E!a5H zoFk**XWbPE{ksPtJ>1%ZqkXTe9R8p{el4tL)6-7;P1a8CjCH#8(GiwhiO(}M#)^bHd(qc}vMvxfWLrc>H<(qS?t(gf%Om7a{~!(3>FWesGV+wWTb86L zqONNQM{3S$#B%pNUnp}gkpZ~17S!o;9vNYY`B~9^kg4;3wOj^M^}?(6b+}`3B;$P@ zUDGdp1jK?;z&B7n&p5FtP${D)Z7OD$DH)Mi+ssGL>|seU%xv^RQjD;q7-2~<1m*T+ zb|EQ7*rXT&6vHp>l_waG1AtDZFL)jlqnXU)a7vxFr5h>L9yOPct3tXBR2qFZ;fUF^ z39Yk|o3Qq0*n~!(P59!^PO}LuoHiklut4V#RhGkCtxEQ`fY=cbb$lHdsq7lQizIXx zNpk3^L$6FB#l&QgkrwWH&buJb3_iwNvfRLy91Z~0T zJ=qbj3ccteb3BXZ88FyFhG7PWyJrO4zRkZ0rY@~)j9t)7RuomF1gkuECR;&Wb zkq4JGLgZ<3?Rd6|7NDOb?#%9ZEhSk4U0=i9_ za6bBR1^bHJg8jKix!9+O9YD4K7Gwb%9cuHj(a1kVc`~U6x${CEHrj7tnf`@zQJ%<| z{v0+M*{mutz{2fWp6t{qnu9JQ#homE@GYGm`nD)v&)ZHTBx)%oKL)6-_bP%h!;vAB@#_m`$ zm}a8uY&6t zG3wZ8|KrRqXT!&en%HRnMxe*%V@9I-CF>DG_Yjr>KsnA|A2To@cMh^x;FvUYC_D*X zpf@9q&?lZna4?3Bm~=mq0yU_SvI4JY=WIi@stvnO5e*94P#4ff-9tLJiIf{M=yXic zCca3TZeX^MJphHX_o>+jd3G(gRx8#z?yhI|9Rt1BD&?E*M$c;7p>TOnn)8?XEaWa( z3j&qLDI35&UKzJqgpi-mmKZBM#%3Bv*enVGIUZw$mv7z%yGd(|6|^9d;msxR#^1qQ zo%9RwCv(clEBDVZ>MZ#lj4@9(t+RAxQ|jU+@X*}e)hf&4$A?{%`fK}==e^AJLDv>= z)O{jq8x{@0l^C15ONQg_3%>||RRrhz*Fvx{$V({7@SJ&30VkvnPp<7!q-e!)L&zN##rH7F_!sz@ZX^^G+&6tLCYJlv=A~3AlL#V z9Vo29iA@t4UOG;KFtb_Jq!|fwk(X7>W;K(hC0xvAZQ~*jU{;y7aPV9%^2UQT0205v zhS>>@@>d=;r)V&4vsrcKOl8`_aCKX#$a(GB3r<(1kjBfuR=dtZ3F`N=s<)(-vcR8< z*pb&DcHwWB6JtBPzFS{2E3CnyoIjyfWe8IGS)OT8A zXELp2uO#L)0NCi8Xom#SrIRa7=lhAN^fFgxj1_j9H!-DvUiPn#vCQ~ z5tca&AEUPVk&CuZXX~jiK5=_HlGBXxR~|AKA~24yPUT8OhtIgS|CKdS@`>h84I|(_ z#`<3b;u+H=mj0dJaPl z)i;3nOw}^}riz#(K!P}C$vg&3LIg6?p9sZCQ(s~PB1FU}Nr(vWBJQ8}?<7XnGbC+a zPK^FDYwAyr5K3Dq5`f$UGuZ2U1|=bw%UC0G~5+6WS~ z5ipbaWLbxd;sHaG!|WkI9$a3s1^9pf#s^+9NW@EjI${8rG2y}94#8QOP~oIZNH-~3 zg;Uz(h6+w$eV#jDRn_LDn9-b4y|ZZ|?5ejx(64f~k@kJMv%q{VAnLrvgH$8X$O`&5 z)|Ej8yV8<9Q;d2NvIFjqS=IT62_04nz)}T5BC+c!rxcQ*SCLm9bxQFX8bWzRir}P4 zIoD#*TOT`Oh*~Z*XfdEbnfuAtDHVa#cR*hT?M3-E=tGizFUV^Y|ND&oq#gPb7xX7j zpZL0kXH$lCdt85lX1Pe)`^&igWMN-IP_lKzbCMu$N!^>jCN$gH<$~gE0q^sF<-Z zVHZ}cd*S72MyuxjrjG`tmozBii!>;ljj4qOB_5ca_SR28LkrV>{ zpmc3bXi&CP#5E`|Bb-))f;o~J6q=U)N)&%dKMhKO)S!IuOVXgg>Hs~(fnQ1uO32ip zoP8P%3XsuAB8Pr5p+U+20u9O!O$~}`fClAD^e6H?Nq-Vbvd>%V{ z{zA#l!h$FDC%10-0!HVbU}uN*)1OH8)&6T!wec17C$I=W-iACqP=A7r7}uXbWnk)0 z^1n=fg6WJ)+5cbZPoAvnqd(dE^k?)Z`CqO-dHm`4w0<7{I_VC{zb2>k!A)N$^X@#K-XED6y1|t)0t{xzMN(K53H#_zxuyef6|ZM z{QLDMuIhgJ6A&FR$C=fqr8r+je=_LL@ssKE2+mWt3?w)wp8kT9>EBIoelN+$SJ9uC z2UI`($$tRB`HW~iP+xEAPuwr}*Pq<*3gK-hbtpIgfOIG)i%5q8c&I+SRYwdY zj?kdNfbQg*A4uJa)OENjq^_fU8+0N4bSD_0&g%`CIm&Y#LH$x{lNf>Rs^Yl*-UrYh zQErVPNS%uEb8GR29v}tW=H&2a$QNB?C%K1wV0y{^PE`Oo?7u$%h}~d{1S+Eknh}9t z`U9?AcPfd$jI>BVk&hHLcHn!Ys8Kin_n7~CxqEx*KJIQQv*U_UjfZ-BJ^)_gncNyinTt0JcVsuS)-@UCPPSI7vaEqH>wQi9HT`jYN$ zW6P6&e(Fgc33J?t+?}oh@hWm_mfkcIxLZT>unHq#4}kZ+H3Jo5{DbEq`S`sv@w+8* z)g}5!I1cYt*oIFz+i;2_-{sv7<=D~O-Tc_ce8N@f!Lz+vfjZKO;5IJy5i(qZ6>vQI zInHB7?$OF<@Omz;b!b-)(obG=%&3e8r*SdW5n1fgcj%b5@OX5xG8%FqUP`+z)t?&; zHyI6AkvEn;_{WD64^8+Ro(-LY3bzhIBkL|bW;BEm83MpR^8r?QKCyAvI<_LHOs}AJ zLo>Wv2jRMwmOYO4;<$07KJ(+B3H|r%6kz)%p#Od{_Tglx0TP_(y$*~{vkn=n6JbM% zzBE|jJ*NNHMaK-TP0i6?`t~s+LR|~@8o_3IE)7q7{7o8$QXwd!McnNmN3B#{^^L$l zl>CId8x~*8wV8&h4IPrd)*>+i(d=1S77Gverg+$c^_541<1u8i9*D|XeyYCj`s8>a zNT&hdIhHOtX4L*o-#Z3?HA+B)1w0>18R32&Y&`%sntz|cyG6Y1%tZd<2rZw6nLUO$ z+h_{@EZmtIyvk@|l>(}SyIqJ+qxm{dzx2aygC@+J?yjF;IP^!B9X5CaEdcz{6J3*W z%Pgwjg(onP=y{(<^~ZCL8S=%$$Bkf`ZW}+sLc{)pamNgrc530S9K5Tbo}Qw$FTZ~S z-{CzeGZQ(k?_Ay0ZNy*P`~%1;rT5nI4DQ}uX63?+RFZ#RdOwk>F6ng_{&1cuPN*gX zzk>7=h-A_`-tCU#RkjkClh5hWoBLceQ<*vRP4D8o?BJD$SVid&iv@0I6^n<+DAS5N z@x@Fl1}Ce0u8l$lZxWq$s-hOq{T_nu&(WuLp(?^z*{NR<{{cVB zDEz76(xH}=;O)6har}GR4y@51Vnr{zIycH(r2wucD@Fp#-shxTaPt&#>v%;h_8?Y=?0UT(HLVz8QWtl6CZXPepVwP z0G{?WBB#5$J>4wyEwhk{>qY8zq&1~a`6LyTWqgfxDk;6tQ~Q*(Q%O6O#544ySyKMa zqLNvkX)}vTW>HBz*v|$=n zNniTx?TO_vyR8kM8PR?(1IHO$FUpA0cYNYW3M+PLuc{wt+Z{*}Vs^namrxZ0uM z+&qcUP50iiNs6%T`xojnYPfrE>2q+wcBqkII=;Bnh)tg=Z1t#@hIS`hH&>oSCZ4gK z?&r%X!k72LtTT#3ujLR=Px`^*1xQ{xUwZ{_=WI zhxQ{!ERPl1XrbAnT;#RGF|z-qj?Z4w2V7E&rqGk%B}Xd4)@t^yZ!PYY(s%v234Hp1 zyOC8~kZQ3^6Qf#kn_^cn`>@)n4YpcrlNig~Q_O}Pz=5^sj;Uf)J=Z21U=p}yt5vjN zdsKJ(ooU>?XL0`L%m%aDnz4&lSetvi%&sC?sy5DGL2Xan8VMz+3`g;^?^5Kor=*M3S*sIEZ50) zyvKkx%+}p4r3VzFT6MRws+|C$KnQ&|s}j9P?FECS_Ww}#CE!g}>EE|a1BJHUvJ?Rq zG8#03B3NpVO$ znekXU57yytTv3+Xt73Yr|7L`G$5{}!j#}n89+Kn8?J^EU>4jOFei}`$+r_Q(@!K2z zV@e^jn7f zQaLZj)tzoVj60JXjjw5ZT=RYo>kOox#`VDsrNmLj4A=n%&7Uz*?E zyc@}5Z|Chw;;q z2FeEuVCD6U|BL`3lM++IY<4MLj2l}5$iuA-t}JjJh5r#;M`2zAkL#)K)B}`%T%;Oj z3IpoRv^e<&hFslBrugpR+u+9%g%h{N_&YJn0+O*P!ud?i|6Nz9CfTchg=5?c@U3;h z-wEdWEVP6&So`>Cc>Tle%qctSylD?5%k%z7(XjORMT6pf{5XZdx``w%!;^hMZJO1? zx78$h(|^geGHrd0#lv^P58vwH8)_0Uc5ixJo&|vy<)y{UQiMU;y?jt-V}v?F>*H3p z*}6*A{~-3`$z>^;K$^*j8vQ_PQO;?HCUl$BNo#f%i)zYuJ zNP&KFIq}T$EyQ`Njc(o;gxuNVI_Gq&H`Wm@9AV0B60T`OUey-aQHKqKq!z)J5cr1D zTR)vF7kofKwcHM`7$hXPCfA;s<&t}ar^`7>S!N2ahMMc}YuWUa9E1w#pXH7 zrs}|}_OSzU8-n4d6H_&{a+?Xbds+Ioxh3FkdNaNKzaTLpWXf1BS|6+zDMcbdFTgb= z>--+hLF9Z(0@a4cFfn16F(P~fx6JHJ`Ed5CKW!)d2@ARQHlW`_@bD(Fty!&l>vode zW(*Mv37*C^#h-H855AkEbBe|OLbybgH;Ta+D4VAe}%ww z9r#4~r6OJ=eoYOFPjkmHT7!T68r1J+0j4fxK&<-owPFisf`*j2gr%2EOeX$W%t6dr z83IYatzSgaU!`^<^ultigLu>&N0fa2g5l%Jj3)5$UC$=)u|MOt!^ifAqT%EHE$4%e z*=YY<@S%0@dhJ3<>wYQyy`28q=EwJ7~F z^EVjzH3r|-Qhp7_&z(;L%Dpc)9foCny~KgLMo|4_<#z4Db}$!!J<0={fIOR%o$=T?7tf+!I7vzEgK5mu^B6I zvq;{c-g+A}Cso04PCIqd*C&viGEkb0aE{|j3asff7FiPs;h%;TK)ifcPfhWr<0JTEJGYh_VD{9+Q*%?{pytj>JMw z+E{3cgOv~JjYxscz&|@eLFd2B!+jYDaodq;>pT`;KbH1f7%?UTT__*ICW;NQ9h~aa z7Z8L+&i@-Z8Vt5k>Lm5A8^GNlW|y4bgMwT=ZA(2#X%o_>IOKVgV-Vku;?wLzE6)r* zs(I4O4R)?!Q~pH06VZ?F@HG@VCcgFUu4_}tKzN{^GQjWpT1BMkvr7>77EvqBo0r9Tu?xq z#76Z-N)A?~dM^h=$>gei&K>=UxK5<>00wLu ziQTVKm+VFmG7%7T3Y4{{4&a9hq&d!XP; zlq-b>s2+$BW4T!$OWY2So9f3Yl5CZFV*3fLdc3A-&Q-5~ITs7+RjkK5QZr}pq4(Uk zry%d| z^_fp=VFvN&FPg?etT$7VmXXkg^@9b(w$fUyFd5V>Q0j;x@=fx!_n)(fcyY5t3;Ei+ zP?_tkZRRYB%u?k-b24BAMh*vT8Mwy8az2C4=oYm75JmQ z2yZXM?<8Y{)D7xw=)2|kmqtD$mqhu1$$2q4AFy~&WDqLBx#r4KD|*VvblnBp*;lio}gabxBulU}`lUH&3T9)6PIgUv#MNcoxqd$xFZ z$v!?=M2tyM`U{sQYhk|7!zbO^-^?%P3~l&HaavZ9h$lnxHaZv)&(FNq7d?nmks_eyzbZsOHV@xR8Tb;Q z>lLS+mp_M7#U;Y>`QVMuCv^7l?08Sn{@7#C;4YG{ubUWmL%8Nr%1Jl29N|jB6XTX? zHP9c7D598J2weQ`T+4-(MYA8x9T;;#rRNTeg@OMiPC6kw8X4?nqjKA_fflKz7b2XA zgm%X0THze7f#O>q-`s(gn>9L~&w4EDaNsg+y&UX{6SU`EAB^X!Ae~w_>Zr!jOL87D z57Hql@CAjmWqh2&?=~ZjCOvWELJ-Ny8wDz7Mwtr^v|!_&Gf){}&l%sLEkHZLaMTI> z2ReZtvu7Z9@&^@yOb54}Ai@0~9;$OO)i`ND7`_rM62vD%1!ylgtjRewk45@I{gHpnG?qB4Tg= zIdLR(>y8s*gLx`Yh`>LdI-;Qi|0Rsi0fPd?gpAl|e3t$-2l3F=MF~f>)UXQ{jsm$H z`GjsTbp$Hn^aPed=0RA?1s0Pig~W~m%aKVS^o%<(Ya5aU)(z*WtX0D_Z=nDYue|!%t0E`-=xc`6MhTGH*ke~{Nm5*@$ zdJ;|NAAsnU!0dbwr}BY_(j%1zmc&XD8O4qBPziOo_>@Gd{Zj1O)^AVne5qFWJ-)>$YM>D&ynFo@i7rGey1?LPdJmP&*&ZH7ah2Z@@{&xrW$ zB=@X@Y$J+3_Idg^a7@mJB82k!j69_wmUp&???mDuUa9)-JgRxqa_!l2@G3-aTZIAm zkP4KBfcEIFH|+0ysfoOir!>??E9|GQ8L#y6aNxTbHSSJKYzNvL`7-h8S9|##NDfwi zJ$T%5yr~sY_>!1b&eCT%m}32@H?gss6Trr#W#oehV(E9zAD(MN<=fBpkDiTB&d!AguQl4gGR_2A*%+VRc#}V zYVt}LvR0}cM;sO9)VAVR2Yx*}98gDN8j=Z$2Q7&l3}T~|fR1TJ@if!v_|T!R{pEl@ zPt=i^czNT1ofH#&@bM#>JME!FzXM4I^ds@oM)5yz|7>(VR;ttDa6VRli9tY_Lvb7Z z_H0!eCWv62Ac7DH&2LQq8l^7&%P69M{wEEpR;p9A$6$%(x7$?tk2iwYkrD1@#_QA% zap6xd%XyUj^sRUiI2glssIT0ORVQ*bs;5cLY-cpu#wdb@`zDMQKFt&~>;ubD4IN+( z+>cb#55U%Ww0)|ubsjsWB(l&WTGK+e!-u}m?_P?99vZdK1MxO0JTZ~7gY`!=XW;2X z$$xp&O1Fo+tNHqNvC#Tbk`;54ziCB%zl;yP@9U`VTcY~@NkagSNN8l*s^K@TV8{4R~;r4QIAkbO3UrN<^Oq6~iH2|Z1HXj6GVV-Tj)#Q=xY^Z;lsFj>uEbiVzY)o{B_T(W1>u8{$z6Joht*N9PFf=qJRWxQGpV^5Tg6aCnT4ng-id zy%S7zZXxlN*Qn9r(NlU^gRg{m^o^^CrK^hp8&{=w0>-XWObg=Ck%tA(bzc`T=XcNG zrc|ZgRRW&>F`NW+2pF_)Ota)dGG_FmN7UhEW^oADei8~r`zprmAo(Ww>{ZK%xk z)}Nn>l85H@_%(Ux-5(kJ>s;Tz!@oX@dm)6LQ9_inM=y+jy$OB)Z+WaI1gc4F3Qz!~swIsJg3v(dTaqw%_Y z)B*XZGw@4XPFEqA>|hEeVN^CT{)TW3^0XLoNu*XNZzeP)`RZH?)qsfg5+P!3xiCps z2gY1jVO_);dqJh=4z%E)hF}yz(e6!!qRXMGzA&Na$ZjNqT+vP7bF@&j*Ad|J1qemm zBorMD?_C)3@JjWQPsC~Q=oe9v(a$T)(=qV*`6Z)UFQ-x2S{T*B!_7w3vSf6yE*bsl zWSuSc1DQhq+BQb(* z((xS&4V#4&mm%NW=&Q;TKhqvg!G}&*10Au4e`kokxLWu zP4x=2xgwl?yUrB}pwgU8e=ZIrpkNJ|r$J@a+-JV=A%#-XLb6 zb7?RnV@k>!4T~X{cdmMsm?bi!*k$m1YSF(0U$#yLrj42F;R}#m(4D%@!>iniGY0B1 zmDFSp*lp_FE^#Xfx$IM6I~wm?1)Y3NFQ~ZMpaWi^?wJLbgzcD5`&)74uS59}C_m0A z^w~;4m#iQCi5CACeCX`d`a~05z)qGY3ck+d<{ zUym-5n8J|?^b4p2A<5pCEJ=t}00keZC3~Dbf`#n%1w`)7sQX)a&@j9}d8VYqKV~+k z9zUbkf`t6swY=On7ZDOh+b4L^MrO$Q03_rM^rX#!^~|I^7k|K>8M#k-H2U3*Ya5vk z-H~xhOWnefB!u^%3byeEG^eQo@^yO>Ej%^n=t?n z_w@4!Yn_R2c=>~~AX}J#hzLkc|E+By<>e@M*~h~N38J5DZzyLz#Yb=kR++b0Pt+~e zY*7xZyapoiK@JZeZu9XC7|!G;#69-&YXAnmx!jW(sE(EMm)RvrTPNqcE*77A!Gr|z z=1VzgE{MQs#v=((Hc|R|mpxm(W`I6jk?qvW!|IBgz!MM`Fd{0N zElJ)qzkR$Myd@3;^Vukkr-yG8`OeH+?qAY%`TvVoL;dN6j;@Rn!HR;AbgH=u1pC`i zTflC%x+o79NjZP?)tFqlr{|pc=y~p=u+2#y1@hwIluZU-GzMLRRE*mw$v~S4O_@U?sr(=mpHlL1R31~ zVSD7^3n&dHcfmY(KJLXn{svu-xqG3TKL_ac@a%XmpBV4s<2!r#Bb|MGs)Gf>rzv`Q z(Z6C@ks8aiFblbtF(nQH8ws67;FZUHf|&XPLUA7r;BkK&5Q=+u0FPT8id)5}yMh{$ zZw_GPakC}u=|KpjeIab+GR@27dmjVGz^6PQCC}+TQhsW}@$5P4TKKcKoWpliY zPi$c|KEgu(o68}ZW}0uA98}dJ-av$;{Dk<-FB*`<;pR34HEPoYM-J~Au zA0Z)LP84&}4M#QT*>oyGG$dWnkb*U*G_5-CN=Z_uy-kPfRXZU9>ANyzp`@R&AhyQg z>c`>Kw@2M#NRyqbC{HvF*XoW}LR_#CdIF{-S$}{EV29eK1m~-7E?KJJ(DCq{>W!C* zYgrpRVJ?n%Ok~e-I_1Zxb^oA&yuRaz=2fg^=u1hd!Uqimvw(%RV(pLuenp}Bq=Co5 zIj>e{Xw1WY+ir2#f72R+8EqfoEJUytGECj7?no2rUC>{~-SctNnnwyl-r!ZPTiVgQ zzoqW>q`e_1FA~(xhabZTb@I*4*4xqtnpD4ie9lD_1fMG9ZmzjUO%YQo-cD1i!BCZy zc6iC}v>S1q7akuJN#!#9|7lJq&nV@_I?97Iqff*P73n2J z@1q*>QsMOUrL7cm=|Z>4TzfX1r*iNjouZ%PD7mMvew2Jo_eht0f|CNJP~Z;pQ(6(<88?HC*tR|0B*_UQ7zvh3-EL|DZQTTt zK--4oh0*xhCC0?pvVP6bV#swmzRE#z6h-0+fwLQ`_d+^6_OC>d61L#pK{U>*Sg-rB zIYpXH3zBlhkBcSes`quo1yyP|MAs3lbA&LZgVgd$vY(=js>Ycoo^p*Ry~FB>XEjaT z{udg^GhY(@c)y0|$8vlK8V$Ng^keQJlYSg%iGGB4h^{MOzYF?NMW^j!_6YrW{rAll zs>ikebNbP#PjmW#O>KdG)I8ISe#B4uzd=7<=zoFqT)r3|n%p&wOU1^pO(fau51 zdjJCZ z{DXnE5st=53zG8P51=0nQS_tmU<>r))E0rn77d@H?Y~YxUVfbhGGHUok4G^ACB<(J zBtk#fL6d&;0ZZ4E|CptBJ@@R9bJ346sm&JZ(A5_}KQ2E%|FPrR=JW%b+5-J}e`YiK zQSrq84f=6++6B^&YcN>88F3i$DPb-SvQK{l|KW(x566F*emEM_567?4kI|1ep&xeu z=Nj`LySo2d^yA&uL_cncZ$>{>?ugJ2$gAM|*o1yO*9pE}bR&caGfq&Gi}n#Uk-rwy zWH6=8ZE|y&E}PV3@Wr4eFk%Ha^89rzP?JF>H}XjQLMdy0)cqlfAGxV_Gc+l&{|Y_X zw207n#=2;F^7_A;)03mEu|O#={0sENts^q{kqO_mKu_M^B-$*nEdhQ67wi*(>gb1~CyOL%DXFI(B+rTxp}F zV>2ER#N;}{IodgO9%aU}Tj2_c|)VVWB?Z6}}Za`TZc z%vEH&I^quQHfN_xY{cv^RY>M&b{=hG&UV`NDz#t&w%b1-S~!Ei$h=a0>e^G$suKMvi>^L-M62Ej;zP3YTMQ14 z#OGZd(6ekZr3;68L=G4Tn0Z*8(k&uB7m2;H-Ki%{;l~_^v%BR(*emJsj|4iN&nZg3 z$F5TgFHsA@dNh-z_nzF0_3&j0Y5^UCCrb2@Wm1dLEm4amlKh>$4QlZ#qK^-+jIbWB z8PwuM>LDWfKxkag|4j4|k&j17BK~*CKOVpe_#yw0^A{0W+@zK}A|RrRM~7Y}co1DY zYKlRAJfmqf53BdRKtO&`akSF0_cz928}XdYm*}wV{tbZoA6RnT4dm3jgbrS9LG+CYzV~Z4MhF7<5tlN++Jqpyo&?QI z1nP5R;eUQ%@SgQM9o`2Kyo;-PGkDLK)C}Io+%Mo={vW~n57%8Fynk-{AHw?uUe*7f z!TWE%um5YldEos4^{M9w-Y@^cgmc+P@CvY}SEJGl=wC6%N97e+W6I z{6sVSjw_AeH*Q)j+~~f6{fbFKHi>WKrZ4A*@y+BDpA+5Kn|JeiNu(RdIGSAOrr{Pw zcdVNm-LY15r8|~s67=k4`tnCilsZtL72QPXq{mP!_k`Y5m?uH^pBhfpoM{x{M}9fX z0$~eqXW7O$hxga+U_Ck=*Wg_Z@$UfRgifO#2HSkW zb@IG#$c*J>K{3c;$%U-hhE0-_Z_?KJ{efz$KQmC>)_-lFI?n$fg7d@OSJxCX=%&qZ zPVqeMMQ12(ZcTRNwaH3y*4cP{SLC&M@^a=dUf-ast1SxP8%fQzgV{BSSd2HTFihGX6RPJzJ#FNuJVeh1quH!@L44L5<5^ai=$8%RzJ zamn2Vj(HHL!WBV)c}EG)uB>l{XRn1#1OV)dC>5q&+CPKXMy8c{3_bX*f_#k6C-RZB z+$0~)RkWLiIf`Npp*P};^($ZeMx7t_D%QA7#4#joA{t_vaP(g#$cOv;Bgov9iQrLH z>O(*;VaV9B31SZdU6<}e>Pat?gRn*Q@lp?3Sf>t?VTW3!UibV7eA0pSF8MeuCJS=i zf>+(RhwMnfu6)<&C{|XF`_bTMrgd%7;5u5)ZFORTHmn?}`&Hi;&6jhhxtwzTY+VpJ z9+ShAnC70Zo2bC1iF|9p8&wB(2+y-o1vFxHNC7Nc;c5>HR>Zb|^(tatz$6!rQDk7u zbpvCrz~C8?F1pSnOKuoOJI6Ukj~Y`#_aME~O=^!6gcaDRetfl9qOKLfl(twoq18Nx zMcc(sXf?rzp)T7%dv_N;bVJ?W?Oz}{S5df8eY1ybXnZ;>hBw>TmBL(iMY-r>CMR>< zJ0n4%K&3>yMz3PMT6EMo19rDb?J^cg>SK?>3#z|$3;h2t+Y}>70XDQZ`9V+Z%|avk zsh>@+g^5%LQFq_1RCoKWizKx->hcPzV3aNprISSIt3*$4qjYQwrN>Se)>6HV&{NT& z9-H{{56Cr)(5H4b-Ftq6KmX(-K-R|oP)F8Wm_O82==*=CKUCmH2Vz9svPe>;8RXHH zcFQ7);#FNYy;jQ@Hsqe+&U;|bpACC{1bk6{nrj_fdUZ)ctrdU5Y07!i@u955UO)+)a=iu|xreylN`1mFloYJ?#EAdsbz?1Xe zN`z_jTlQUK0KddOmp<1}WE!vX1#HZjlJZplMUsmj@$jmU-_F!cRb(aJ&iPN=%tN2R z;L?S3d9XM0+ec*0_wh0#fPtF*0C{y@*MAY&{yi@$cS;MOTFymEW`gj!R|hQt|4qYN zBZD;V6J!@`_#+9R1{LbDj;Ay}Jk!e?0*7Md{F!YeNn0=He`pn-aF;|ZsYwob-W}G6 zyjR2v5b;f52_B^qddj$;Tw;|ZH{a;f0|rnrL_oKx-~J8(0}#su3SQoz=79@B5XT?L z(tEYIj9sqB3b?*zfe1`ksg|DB$fz22`V^dSl0zMGxp}F&zaF-ea{lJF##CoM1*(^Eo;fPG*#yJ>n}vMC z$B`Wgu_gS7iGV4dvNf6FVg$HLFNe*28B3q!$bA!hd8RRBW6pzFU^Sg3ez#Xi>U)Sz zkQWXK9M7iH!y9_cZd2Q?GI2agbm_Hci!gAQ(aT^Hi(OQJ)W?iY?Uqovm>G1K^f+lORwN9)>alE+}zX}accQ#i5DvcIa;PB;5R-gbp z+i!)2t5sToe6{%soL&)Gfry-=(F)8V=BHAcbK^1^eRbhexTLK z`l0#ieEVr+bt1RKsMYa54m=t31(sm}Il&i7lzL>NdiU2yG!r{-Gkd(*t0XNrNIf1u z*u2NbqIwh;Mz1~F#ft@U!gD$Plw+&pFSPU{Q=~(aD2YewaI*LN%(F1 z^Xr|CO2{yY#ju7f!vK>?cW(8exJX7m_> z&^4xy=Y_aLF{6k7)qF<#KZ?w#MdX+BpE?bLh@tk(!1TpNQAJ>NAS%dn`iG$#wy)u#-|m*?#{rD+#*{>HSY)s^$# zKZUrw=YW|)Uhsy0Lpi}@$ps~6HLd!2{9^7;-9Fl% z{`;Hn&!qd<@LUZ8k92 zRX%y?Z4PyuA0mj`96mnN=9QN=q#pKKH1`b$zk0uk;qQ_fCp^7GadfhJj%1W6-J*ugmz_n1lmQ%d$?r@#9{NIg5bi**QvdNhD7++Ts!lm zPj-lWUFh+%ddP-0sUPDreX^qviXi#*aCG$6+aB#g!PDP?=xcT9@=>+Ri+dJ=Fm>?tLaJh5E>{FpDi@n-kH$p9_R2v%IlK$h=EK`wla|kf*>84e0;wL zQE=;Slq9|SQp$8*4xfO^MY8>TdS{?F0YaafMFKwnnp0^b;#?TV`)MQDT?@nEZ zTr!ykzvWS!F~py-^s>Awy>LD*VzYnIkm8}Eyh3*NOO$dF;PQ(MwPm^gn%hBM(b{WS zKX+gZ3zWn%%P-#aO}T|x<>Wp5gabbskP!_PLv|BXEZZ%hB08#%EJAwKhFLU+IGgRDHcO67)D}yBhJSm#*acMI3YU7 z$ImMWuZr=ZXP^+GD*+5CvVK z2j6ldvEKvssp|AY2ol!70u8a)#Ao$r8L46xr$3GG8?UXyEdGFAb$%o36A0lW0Vyd2 z*;j9X7xLOOkaJ&=e^8Wp$qr)>mwe4@c0{yx$=AGPuZt0dFMFzL0oCf>@Y!N|NU7Ss z0A-fjVIuBApPLcJ>6+#COudKxZ*3Qq`u^+PMN%N|Er}_Y#lL%4^D2E`uUH`EbP!YN zex^?IDpSvbbC}AMl)Qsb11MNrv58n>b?_Pz&yE*$oQL&=2)W->Z;X6-OTF6oqVEq~ z2t)37)NkRfDfT9(D^pTBMY@5VZS88b?|&1f*qMPsVx9aM@`@nhD9S5nI9|m%VfkX{ zaC?Wm#4SC%oZ$0{P|80A_2C&cfH&WyGfh2 zORd$aU$jb6pur(OlWIe}at!(Ys5y2tf6%9Re~rF7G{s?2--^`*L=wFA%#gcO{Zr&i zg_;-nvO&#`eA%qtANjIPy(jWT)wfm7|0{T0#d`P0w5?k|qJ??wBP`7G#^l6=TC21$ z4Ifd-cRxDE!i=Z7FB)~5FU%J|)N1ldcd=KoKJd|EiK2Td)}x~5E2#D>Mr{%6vmNqn z(V_-^sMXm0!%73cSmim$yu}M%JTSez#4MHCex_JUsQPQ5VT!etXtHYA;%H>b_@P!q z1TX7SD*M-1Nvhex6l)=UeFtAlm|`uWuOH&;a;8|f&{sIF)%=|)*4^|K6rtvo&`?6) zePUgnUq&lz3QtPxp-Vz7lNXWfUel~zp=HW=01L~4$6X}0c2ODqX;b9&IK!@v{^2pM9 zxt+UC?Q@>D4Qhw;yp_}wKj_`G&~m)G^E_{p)m7(t+gW|}Ja27k-g(|S)Nw!5Y4vjQ z;|*d|a&k^x<4O0H9c%055oPuA2)CqW{Dk|y%br;;kF2YgN2>L5yPUdux!vOp^>Vvq zl#WQePIlv$S#W(r`^jiJKB}$G>T$}g-MB53YnKy`wkqg;Nw1UL_<0siKD6aPTehgS zdaLiW)RqHn+0YgaPjg)Oc@|~6CYnFyV2k@wh8^#x-g=(58S3v2((3s#^wk^T>qo06 z`f|!>Wkdy9V)agWY*oG7ZZ0n0HC>pJvY}H`ioc~8QSX*KHaS-et@!&oO{?%bwF>{W z0X5d&DbNs?Gk_W|p9MAoQp=h?Q9nQ|TVsp*0UF#IIqC;UB}MBGe6LSjz1MuoG@o{? zuG6^hO_p9US#;nO9==x6IzpTSDLTA!ZvIf`8V!?`8nWNXR9`fknB=ArI9K(Bnyz^h zKYtL_1fnx|73+gbh*tDkLj0O~(<_ik<}H)tdDUIW1g%h#^Gmu&QdS@@93ux`?;=U^ z%3;M>fnRL$oTpG`Rr{Ej7@DyBw=diT6*_nM&uX+jOTR#F2UNgT+$y>Ml66VyR%9KhrG8q6$8Of-g`(3l&VBbhTOV z_NanR6nvNpTID%!bOy-|oHj`|puapL9=uLXqVcT*ZJ=8)0&EdWEoME7S;%Q)+$|2u zs2?3TOR@qD@$$;>WNRVP7vhXX!^j{O$U7kU69RdqmQ?^0zsSt(vS)_oLcyLD$SY2s zlqz~A*rG@7+lHJDUZ9UBFs+}IlOnJ16$>xdt@}J7r+DWKq{Yg?rAQKDFiLkI(3?D5 z5LV{2 zRdv*Xn=F(W_w-Y58HH0qWQ&^BQIfcCN#N&1f7{iVaNy^R9P4Ue5mWBEh|mI&$t*k7 zIp8jWVR>$v(Ih1#xvL+Omu^*m-UAU3?hCxqhtPHM(h8PdBnQ9mfC23E@oh*rGY{Fn zeY~`Bd~|t5EDIDrMg0J|omc87uNa`m|HfW%)^fR+-tvk8 zdJORMmUFPcskj^qQrXkmX~mvEc!V$gu6}aCqk2^5f#dX*MRvrwvGLdQEPO?@@Vai<^ zv)t2yE=O^0HQb2j& z=h&RqS(dP1cZb?DUGmBXFCSoIe1O9zFKzGy%DZ`rYOTnxiKJih(p|xI{^^0AE&d#j zGGE9uE4=Byc;rDl)q6%_G02J}o2*Fw)*h3qP(K(`tMOr_1T2&irvcP(yt=lUMDoG? zWO2DcO&JT0knX0=RokPG-uvESsoI}{*4C>}u0a0vUGf~+fHTJLvN7&)u-U~Jk};mL z5lzPPA%R+jdf6C#nRFb}y&T8;2kCfL!h*Xac=qADQFs>fHsRU&e*n+cG{&>Od-Qe* z@VBbg-56eRExW%mEi4 zR^Sfq_S>C&y;C1hXIgKkR_x>@PJKv6U7=wG%oy{uq^$W&E7HrKkcWp^&-Fm=A{}CA z$Y5ZmZr$hPn}gwL2`DdS(PH^^yu4m+7ewlHRQb}VB4*KI6$}`4khcnTwgkh|u$a2P ztyW}A=y>x1LRLQkl@W;EDX%QkDgq7NpyW8`4sw~t5u?vV~J_t;=6+w+^$EwDjyFs;%wF89bw_j)Yfs+Nv0 z+ZNdbaToG}1iN8g&TK4D-I~F2`zwfRRwRV0TkCP>J$x2?A|U>hM^U=Bj1goQJ)7!# z_$)|MJxbzid4(mcwz9{_E5f)3HmP`#5SzAZT#qRoMLp}U)_W$pKc*x;L;c15YQ09| zH2bssYQ2{Gi~ZGlP5PsC*{uFs)y`4r7%tHx&atANKyf_NO1w(qY!A<{v4Gmzo4#2t zxSH}{WY_}xTKmUCr4aUyBzz<7%x47uzvOq2Uv6RZ^bTd(LKww2o}*UeQxa!8MdK{J zV&W1H-|pcRY99yL$GZr2Szwj09qi`CaiOHFE?yw{c#*GXsT$v&lu4IRK>&E@Dp3XJ%K+@t*V@g9D!!^dwo@xjB_Gp$l! zh2d{uphR6V%rFJF^*A*!)Sj7o(!+1JF>M_o1O$$a^0CM(I(QYAeFTpEqC;^WzFu8L zXD#tpvkheNchvO+F8c^XUYJ7@kXLkIob(UWM&LUc%_uj|QFGesGxG3f&e;Y{*~6a! z%CSIMEHswN&2v0p8?*|RUMCkofbTpxz!n2BWwVjW7u*YZ3{14;j-|a^uReGc?d9!a z2!YSUUS8qjw_`7B!%&N_*S9k*nYQzCQ5M_z5JBH|ELP$TwOaMQ*5+*K$DjJtYSopk z>0Uz%1+o}3CC8+| zS~V4h`ZOG-jEXT8PeaeKx%$pxN0_!LX9eK5S9jr>)8FjSK!YoFG+6$Hi3TyU2zr`q z6sEPigw&YZ)vdj2wd%K9(HaHA{x*RIiyZthULT>CKV@?U4#s#bPua?2%xg0i&u2MF zhsL9=$Upu9){Atg!N&**%r}W)-Y!S>@FG^ETDwbtf`p1J`TB;5N#e(Nc}3Wp zP{D_N!+rVnaxxvvo-4Pqt>3YtLy;yJFE*QC37gS$F`5>?x9SdA1AeEb#gAy3C2V$a z_df2Mi?(rq`>rhUY~AN6QX_49c-U;)n-DgJhabi8!cKW*kvQWBR~cvV^2*{Y`H2d7 z6sTp~b9AqeN3CN^j0j5lM4Mc2 zMFeRdxT{7Wkt1ChT9G}oX^Sq)&*;jU#I6xUb+`*|MBYO2>{v6bOoA0oe`6>&X>k)^1KzK zwMo!f6Q+#9wYG>-Y0C#ma*Ath1$HVbqZQp$DeewRG4AYaT!5)0(qu*7X`@TVH!f+g zFim&&8L_)Atc&2Mv?8Ry@})DITyVP}0606G}v)zOrAXyc{PTv#t}-g&DdH{5~8_92gO#T!k5vckH3L_Jl`flKj75p#kCsrW0Fmt z2j6}Wa(TrapdTIN6$4|5et?j$qJ7D%Xn(vn;Y;qD#gtKT-h|CqXI8YYvo~S0@5=QC zQIUIQm#duPm0TkqE*ZQ(jcbn5dFp zKEGJ1&Vpv{5)V1iR!r4(-(JN!`X!+p$bjGe>>{CmKy(?!nzj?Qn3`rNK&;Wy8Otd(lQa^|sqfi=~=J%!=tzuao3of7_{Vhp=zp}p#z_=2D-Gs zfROJ7!x{*V#*lQoWQQ=_amfy0%)_{DBE*G>kV|$L=01)BG6{0Yj(jo_k{!Z&$c5H~ zZI46P_P}2mW>Tofje`F&);M*8daskLm|^JU95Z%IN!I*UquNW(QSGH0MzxnR zN41xp7}Z`HH>$m~YJ7XCT>rmye0%A~sqLjpr?rP+MnHC zdTe5Qsn68*lGLhIOsiI{Vq1xS7X33$|FkypM}Ff)TDohC$)~t`@ghn6rWa5r>A|l+ zL;F8LJIZ=Na{t@J_dokMfhEy?1^VKFURlB((tT z@d}TF4JMe9JMYYM9((3kz?gWmkRMYa((JL=tgGJw-HHq7A}xr z>o@V@dU-T%Xcd!^7>SA`Nt(qt8oRcLS&B+v7kGWeM9U4~l4BzCoi(H_L}lwVZJ{*L zvP>(fmq%DnuUsIZQrNV-6#w+Alsrm*5y_`se2Zar+wk>%iKUjZQ2uZ6zdpIFx#j8; zPn#|$Au>o{(3%3*r#Ur_?I5Oiv_n#?ZVRU>X+9+9v(i% zcnr=D zZEn~Ae{ttf;V>@MYFeSxUXs+Zn~l9cy-VNwAZ)Qshw*)IU&vs{T2BU|PWo1DCVV0?XBH8K#DN@|7IxQ}mOe5;F>!LIy~6~d=-)Mc2=8aso~EVRVlfZ(FY z|JF{JH14C%HTKQz$ks969!7#VC1vr6MUqFE2Wm*UG?$6@FWKJ|53kwhi-))Dv&6#^ zd$xF3ZXYim*4Q%PKdF|ntU^vI>;y>41%9NB_B7LYmo(D{y4TgQP>kLy; z{_q?QhE1@X%v3+{)@s5EiR7IANwgnKvD$IGDAqIcXsIT1@F8wk){$}6!6HCTO2TtU ziBqMP&qw;4lsNG<7^bW@UfI>4ejwh|&s!`7!{i6zI-@R}53@>~5cOjwq7cl}-1 zefGC3UmzWG$;o|tEMI_#TW)!H7~R&28`~HYemz=`nIXQjxEMu|ihJ_c7xG`@z(AN~^3;-p4hUu|Pxelmzm0&kDIeu1RG5 z(cF|c6m|w~>5xND@(SO_TYm`UmFkzhoOoW&(g*gN)E?RRggmcOtxB%dYJR80J#E?S zvV=p!=DR}fg_z#tM9WT>r5s;FVpPFd#4x2ipb#{;LXVfKZ-VL5<=w}i?iLqI#w+~O znUdmB7E4aDx=>Hj4(4=MvMq%&txkm`W05x0>1$OdNg?;2?O*X@E*nXG1GVf!iq;xor`0JHkdFc$B zEA;qF(aL>qC~ubfY{4-tuo^~Ek{;G+M9yVMve>y^P7c5bOCG*1OYT)Py>*UNnHp0Q zPmu58wR8!kkQ8t*$Z1pVek~CeICrzaFBbpJ`bcxE?%-j6uX6WmkI}wUPlYZh!L7dF zNq=Iw`?Xvw*icE5V%+m%+zV@xp)bkA(v`bkbAV*?J8bO!B9>ku2k*HUwmAbGEN!4e z4l;ZT`QBuFpd%}kw+t!foV-e2dWWOjz2@-*G!e!}jBkF(SI7e}xCn-)P6#x_%)AB$ zN@Fokm}@{{R!)pU$i1dsPUd7e?vzJX)!fjyj6Bx*_KZb>sc2djyv(2Umqj6Wn7d0E z-x+f6Qm^e-ONkbRnMB7ux|BztgQ?D+)bXd46=5` zI%@i1jorUaUQrNlf4#lLUz!{LI+V1VweN(-tvv79_((hs_##rk3NkpN1civM5y~~} zV0Z64CccT zIgkg6ytrB3^gC?1?~>mnZWJAeAoM7bS5!bcrj^eft}#B)#scBiY*FC5*344OiW)4Q z^zyv6h|JWpA~k&MJ#X5pP!Z(}WqgLioAxUF#r%UzZ_A_;{~+(8yK$9Nd>K(G!z**5 zSTtV-*>miOgwE&z^fr7*-+&~uvl;t9o|lNXzqaBJ@4$)+P53?>dC@EG<|VY^TN|x7 zNWABB@GanfNp5NCpM*rPXn!0wAg7g6c7$sXKn$E)a@_3HEl&CRvWXWRbIPO3@Holh z;X96j74~RhW+@KrlUYKA2Uw6WS7utdkC%85fJNVxVyIWW=|gO}FGBq_!Uye7cz+!B zVzAf?EzB0duI|f*-?$A={GGO;^6$;I!R0^iHvA1j24frkM6SGMr~`RkkOI;`sr>7^ zv3uJw5sMP=k5>5%N9q>V^DNV<%sm)lo9Q(2DeI!rp_0DV2;oK^S+i+T;rFJM&mE-c z3&@nj*$k_<)|0+d2hsHaQPX32nBgyuuA_l8^DSDP58i6FI#*3P@9G30l`>Z67p%^t zI0{zH?mvk;{Zuc-?HNfj_h|ay(KPN~hT3#U! z52xZ1TFfjJ_2;j!lZZdF6sK;pw3xE`{P8Xzuu+Uf~f0gR<{~XB`k0@ zRt~C>MUaPYsrSe|cKCuP#Z0#~pK0+0%yb>I7(;F)hFo|nn9qC3jx=f^u@I?S&eLKG z6R}1wf*4KemX=pOx;Dw+Sm112&VBlU;YynzwtOuSE86n7+4Aspbc^@MJvR7)2lO4M zfv!8xK&$jUtH>(aFM9=s0&qNXk4@%sZt(Do-wHUJQ#EGU?BN-mvx>fJH23qtoTd+_ zJXOm|KyAmrRXZzTb5_FoEN7^#NsCK7f#O&}k4M?$f~BX0Ny1bw&zt4t56%_GCXPo- z7^FDKgQ%~+=!c?7aqenFaRx??#c$srij)3kGm5kPiKZ0C6FC+Mrw zTqEc#gkyMSto-b8VI=)=yd12CoD1<51O1Za{N40zh~su8F^_^@1d3x-%k|)A>qv{S zLyt)|F11$UzCs@_y~Z~m3@xwl;7-(_t}TYEh1Z@Pwdz#pyNg!4hDbZ;Qr-x-e7Fzb2N#lz7@1nA#(!&)ao z?+pHk>;Awl`TFq0xEsPXmjWT3^4Q`mr+j_M#JFWzO&cH*!Oq;)k$S=}_yX$}PuI-SeqCt20ZsSof-4$55+UvElpSk{az-HP z;$>RRrG{hr9Gb_T8^X~*Hoy|S=f!cby%2kT5{WC*-X|8is~&8x_*FBY%FaWifo#vT zGJ#=)^*LuXjR;V+q|>Dl^h8AhtI2y6p&&Ble58Yc!L>*3QSJ+Bg3gyR#Tv{r46Z+i zBZpV9?#?9%(a>p-5cQ0gB;h)3Q;V0@YJv0^uVO6}MfyxzEb&b_GE=Nsc_`g0UXp5( zm|~qmU;E&8L*k`5OF>%(_HO1|fgwC%4#BHf$B3qPOhtRCQN6p+yO3WXe!VERbSg&R z#|UnwE^jhM(4W4hnIo_+CC|l=b(h7P@<vrfqF})-kQ2CZuk%e^~?GC;1>T- zZJpm4_&L_ASU;UXJ==8;!h7EXB5VP0kKCIPh+)S}{qT%>3y6#M|*5+b*gN(se z&{rq*?^UcL#i+JS5#m;x$}k3ZsaLVyB3`YWg5HB+L`bs!LbXSlopwd1SLi;!XXxc< z^W~WjYPA}xvDcTpyC|amekNR}@nInIYU@%wzJ$lqC3swj$D{Q48XgapKbnq+kI>^9JdUGBQtuC?M+gR04?XU}<1Hmf9;I32XZy#R@~@mW?%-iLzb6f( z0>v(-8XNGKNRONG7(#6T&lkm)smC;{&|5YG=j=Q_fjv9OnOtV@TEFauOQqFE74WJZ0$b% zB|H!HuCmORuBe*za&nSC(v|R36kYW-yXv4<5Z;K?RcEuclSN`y!ZDFvo|w$!p_Vjy)vH)J&{#={^8@8~L{YSf@6~D$ z13N#5xYxgXO}#Wu%Mo(jer+VW5`>wT%qe-bDwNhlU9zGd9*N9$ldAWWnR?Q$e9DcTpy?%%Bb zV>M8AlX})stJPTCsfUeC?8DuKUd4Jahc;>4MANDJ^c3vZ$@oUzeP6tT!vOp+AmuJ< z)N9XH%N^LTO7-a*_2`iZo{b+i^*5tOzL?r5dSp&(rn&4BYKBHG1N&bj-mTY5&3L!B z|7h}VBp=JQPkkfDP(Jm)BRkUnGx_L$x6!}ZdGWoCI=`Yx=k1BdL?W9; z{R=5brF!5IJtkZ=G$WD0d^3q4VVFJu=sHgXFo1Z78g*S~Z2-E?NFsDvj2jw{=LN#b z$YMN0ca^5&sd*yO^?jo2ub+%;$8_qtTG!KIH(U=P*mR`pFJWP`a%9v}z^}sS7ETkWd4P5=`ikRT|htB6;{NQgvkq`$BCQ{6p1Nf6!rem|ez>&G8t zy1VMBs;8cM>Zzxmqv~$Nqa)i6asB8qFC;zUiV~seaO;VXb+`qE(Fblt$&^G~W_rx) zP0w88!qX!zM9EMDH>I!~q03E=xZG5jh8tbnwr6#q+jiXidPjRlBGBD}55sBFwR6&> zwZ&=DzDSz1e_opO_XTNE|9R)O`7o}+>0j)=T%6M)M6{_Y;qaLWZ?b;}kX-FesHZTYgl`Hr+A0aH@Yy_i%d2cs) z=ss0*9>m6iN>l?TO1sAg^y8SZ_%c<9VT!cVo z`$AtQ1RVV{(Au6y6A#PzUs9W@=A01+QtW4DCoUyGH+kft`>3DLh{shP7+<-Gy%*oD zg$=W7-fV0X6@2H~T0NJ2LKpjZzUk`Yx;Jz~6M3jEdyW+h39uoAw2N2&tY^Xn#d+UX zizWGqXdpBrtI2rzFSYWBqXk!)#g45)3U8{Sgx2NDo?8CxDx+qt`~+N1P$9tjdyrZB zjvD2TW8~iUlS7jFX^B0R?2?C@s_aB=r_;HtKb+^_7+OJYb0Tbh_cbwP&PvLX)juP1 zAEo>03P%gAOOpqdBHtG~KbOshDh8LBTEB!q_9m~qY`qt^(^q>L11gHAf` zT|C$((H7Ll0R+$;56}|_&^L#=d0reudKnKgx<8S6>X2t4;OJQa->fAoG0c?;!0|8Z z18yQZJCI;r9^ct3(b-sa1F3D$+j?*7Lv>Pj6XjWmmPVle6c4&9=Bl5T7{HB5j1sEP z$BZ?2Umtu^(dnTC*%J@BTLZ{Ozb|M2x>1^F)?ypN{Duz(JIgEA6&|<|{+itiHy1{E z(^8+i+kxUi?ms6lr$F4rKKIpp@SC-Ib(#`BT972KT-RG(*~Y_Lzk@~IKZ7D{X77>b z?kBa}eeNujYw=DCto)zehDO2+%sSc=R4tyKvTY6>0J;=oBc1DpxMaI1e{P5^3a9w0 z;^z3XSRl?+toU5V4{G+;^4vD3;Zs||PmV!25W(eXNs&YbR_}R_SUwCPvEe~9d&Wf@ zF?L1~pmogXQKqOs|6=hiXP$%tH!j5Gp{Eey5}~O13-{5+*pgZl(Ipkl^*t46PNH!+ zFQhWTFR;hZ2Z{j0%K2UQ)##a{e`rWEZD9)i6a5haVa>H4b4-6V<6X=Co; zYu_@>2ghDziz|834Ap7`V|?je+CAUIA7l6IHv>}s>iFHWVktsO?gAR$T?X`5S|KGt zFRYe#o<{*CWt=X@UJ46ry7r)WjNPz(s_wCfCyAhWur6HHP3*Z7(eDly9?~=QH8}tK zw7Z%`rnz%q#TS|8_C-dz2Suj2ajaAA_6H!$vE;vv7F#W@)sQ+d$m{x$#l#sS~(vL3_|nc70s1&&r*q(f6`XM znK-1U%5yg(@TjJZ?I1~f#;r$bEdcwWu{P&TwiK2}!2Bk$JeltvT>23E@h z2O#Rq6QoG}QZ;Ar?xkX}^AB#R(V6O2eN1&D7Ag)S)-*zdiA~HIWm(?9LZf=786s;IeECKB)Tg?5P z52LyH$Iq+(VXg7uGLjU3cpU4W;zPcG53GW}{vm1#?AMM#GiB8`D`qTe=S34}Azpz$ zhL6PTAQoa1px-!dr@w@BD3!EQar}P+XWsQU*XZ!CQ6n1+Q9R<=ErSQ!`u zSlMVqQ{N);l_4Z~Dy}Khhbp0;fZ!C-kE5IDpw;2=B@%z<40_&$odWq>0|KRUoYw0E z1+h;_qdrgQrbH%YDUrzv{JY)=V$|hIq)!GvkV418ckiMRZuuKQ{^V~K3`Jl}Y%5RVra zj~|Q2bmI{La23tf)_8mt3jRLn{!Bd-J>y4Inq8seO&@8mYALgCLEsfHn>+K{H`Anm zW0U^1cNM1i1F#-H+ZY*yEP<+ftg1Qpj9)5!fJA`2!vK)PAoo~oQoRYh$A<(jnsW=V zgbGxWZoPi)Z!3*JQwk#=^wr4Lfpg6Oz{-L>;*gI>zwUEq!FM7$dy&L1T-uhj>EFy= zB+-$egq$-<#>-cgJd~nfqav#xg_Yn6d!ypm=wq8y%{e@-C;VP}FOXPU(Oi8|1p3MZ zN%{aLvD9;))_W|U+vbq|F|u>W;(iv))!c8&`RJDr$-WZ&ZYzKL4UEs#Vmyp_X@Ap- z!82eV@ZuzVn@=Y=&GkT;#TVvIs?oiaeZ*jirQPgMi)3lryEg_*1J#-35S>S|o9LY7mpU2o&h+z;No6>NCY zN@|g}5G^4r#NS|D3nvj?Kwg^_O1974%`f|p@eOH0#ryh@THOmT5`&DHAY;f-SWjR) z!;*>dV8Mayj94G}SDMu6%`~aUn`x5rW}4LJ%{1xOH`AniJR|-*p}za?iaj*=Q+E(^eHniYIW9!o2ZDvz zv>;9YX2@|{c=h8%wZ1(|U$Q%LOTl)-OrX25;lH-3drOME$8W zvM0W=`H0SH3EafPa=y6A^vd}q{HG_|N|~F+%U6{Vn}lUzStCAdQN>ZBMEYi^Js$DM z;r6sAs_v{ZpF0OqI8UKjRo!`Bad0{N@V{AO3}4Zhh|j?Jo8wF@Kps;yXYbqo02WG= z#;`DATmvk;vgwGPxrx;VG=IWjIaPI!#WkcnQbnw>e3qIhk!CH52XWauY$LD)^i&dh zD)Flk^pvRDYeZ^Q1iKygC1x^NX(W6eVf?XitJ2%l`;Q|o& z-4}yyEBQbd9f$64l9hkzTsP9q!Ur+qwZ#-9zS|{|Bo9hy`x^NVmdLZ=xB)84QbHSz z{3(ha^<{NWC^$xjX-~j-6_;5)xnq$#^%4=8-g(_4i_HCs_ZtIzfqL17-{Aanz#P&$6eK*ZuAH6FwV|0UQ5xg$?y!D`}x*|2!#O$zE68 zTFL(Tp=%X3z=Hx#CA;Jy1TqfohsU{I3Wtp7VY#(<4xP!E-h$?-N;{+LaMPj>P`M`0 zfYs7Cw*tF(G7R?0nA*1~%ek1jC*8FfX1;Xb!7JyBXe?$61e?#q<-xgUa`-CSOm?}= zoXL0Zp_z=1`U5k0qrb74+%p!C;%4%S(jzqNCoq*>*|W|*m$xmzT*ll7h$+EHS}-L? zfR!Hh$@zn9lj)c9KLr?mIqC{F7FVOfFmWwubPgZ-lR1ZzTA6d$26HHb+%ShkF4e7K zQ{|UOmUv~)#>4W+3QW-^dCr57l`wVW8ICDJEl}F9pAUQGkwk7q^VmsqAY9`e;s2XSsr>6;j~l7xyM#JWY71ErGs}FTgKp5U`=xBzC}{# zL_)!Z3hSF;H@AQ;zT~hxa$R*Z*|Xj&4_yx%^oOso6^>Wj?>Q`w+*{oo+Ynl_E&-ky zAxOmBo5r~__%(g7$r>Bc?$J>Flo@+ai+|7_3*<~E-z+fW zS5E3W-_!btUY&}9db;4WKgg)4L0*EWwmU(HY7n^sY($<{_DtRHmp%QWe%Ui(d4PRm zPrhUm-i-64sySWlfD>2O8HS*KuOAlM|E9XXevnK%}<@Fv2GPT>$fOc z%8BWVrK-;)aqkw;a&(n_s)UZ;D9>3&CWaR!`48$|d1a9!x+YEXvbmvG*5D9Uu79n{ zZ*KP^?k()Dl~u3(Q~V1YJD{@dflq%7lpJsdLhCvNN`7<(N)9v$uyyOrIyVJM4kQLb z>*PSmkBPaC?dG>!`OR$zli2v{8v`XjHVu>9k*A&R$QO!h24-O?W@7 zvJ-Z>y?;KD*HHX14F|x|Y zoY!&vn^sIcV@(s4{>A)a zj6oZ`T+y@~7{r94Z6M}2cJuCc5L2PIn(N}BU@8@0D)&BiL{~NcE67(g5-;}7tkwOR z&plGn2ESqga_r`ZNnkM{{4&IX&{050282XFSZqK@RJ6g#HVALULD(FF@WTx1L%IcF zhz&xz4Z>gIAS{nTcu_!b144WBq0LM}AUfWos8%obD?Rn##j56f^HR*FYub>dk`GRd ztddX2Jfh1h{ffLYia?W19~r1kIWec`5%hgj7cUn~k_qmBs!5 zA76-hdzX}&+NgnwqZa)t4AB^h`{=yD`03#HnlBUhSo3ES{z=%Pmp;w-`?e>Uw=JS? zb#m)I7x3iR!-ZTI0Pv*)Ka2-$1OgBCIfbxY;mJm5_1&Rb-B|T?a_caxnP~Or`Ff0V z=LM5RppVvbj?;0elD`sP{zjyTc|K@wkYU|)V}aE2bg@>7!;8U} zT9{8u@N^oK$tsJ(OYu}=K0S@6JV8F-U}2mJ`He){Vdz;|^n*5{B_$F@>K#7IXfPCQ zgU&u*T&u6a_CsltG(=`ovde>)2|JMH6Uff*%q?U@eB~a6RSMzg!>h2tRr1ef)#}tR z3}BV)^=8FwcTvUfZlOpOHUpB-RfL1xz`-~J2ZyE+GV#trCVg|%a>r;p!(4HTh0N=x z5Fo_h`v9)>=*>$45Z+mU=$oUKe?Z3+b5`cY0R8+Z0YdH#3(zP5i1Klm(`y2HFb>ci zF+i^fK!X4%$LLWT0SNCbK=jQ~%RO;`u8#p4BLF=KK&19%mArf^;Rx?6K=jQ~%fA|F z$5Hbbpz|L+LXqe-oY;L@?+iZZ3>C$*1$yGtTHPyvX$$FW@2EA};6-tuO9xu$Uo%+{ zK%d73>pzK#?S{sp9Lc+g;9d#2aw#o?qxN$RNw+o_sUZBJWF$AQ>lKB6tg*+umFUsSev ztZarTn_?@wr?V(KlghS;mHp*Hg8Oq`4DP>-vV+CqDh{_qfWi00*pq01K;44{0t+k4 zPzf=gE{cv>B#s=a=3G3E*3FA~BErjH1MdBgVY3QnBpTDk5Y$D9gs}ngw;mHk!A0gm=sehZIAXF&{_-P0n~V1+oRIl@B?v$sS%(UI z=&%|HShpyVzTFh&&xeLpVg9j7q_4*t`k0ce1akoC{$3bFnZgXAn!P|mHLh_Xq{B!! zT^wT1t4oJTD9#r+t&SPBUdax+Cr`fsU~ZZsF6BFs%VN+yd0JIWM@eGu3#&;X=||~} z(hqRcFejjVa14z3 z+cH>JHRsTNbnF@1PlS+>I@9T%=l3L5$1@~4zkGE@*S#OMH7Bo&~A13w0;Tv$yz9Hj{CB51IVd4Aj8W(^=Ws=e5&}M^cdrj=e##~HARRxg5&1sxhF{lH#Wd_iJJ^wU0AEDJ*K(G77X{ZErtWH z0f??WPwwh23{5L}hmCcJoO-nq`WPMn5_}s6Ab|WEw?j*~9+UI5NcWvW>A1&ueyyu*ATynh{4ll&j^mFXNtaj>zwvUYB<72}*3J_FF>yJ#Cd$H5Pjjvi zETtv@Zw?vU-LNU>d;`q^9<3$9AGi_|QqCVCQ>)Ss5DE!>-1V85pf|4fhjLPxJ2TI|4sUu zezm%eY+8zzl1g1svJ@@l$RT>GFl7(|4~BkDFd`jxJ{YIYvDt@TddNKF=QHbi5^1rO z&}t*k_|KFVdyi?l*~<(e$2O~)bI5Jr?(z2F6<7T}`|ze{yHWe_su9=K#IkvB*^;^4 zr}b`8b!UsV5-GNf=dks`imr7OLYeY5ZGX@#Kb)=`r9bv5Qt@Bgc*&&cyw z))KkM{*C)cyS2nAK>$U4V=9f~LqP!VB6AU0H3)<3O4C|`t_**;t5!#RJFxp# zWl0J>mMBASv8p3#z2~0T5&DPM-4p2Vd+xCvB`KJi%gQVY{caaHbZ#L`%{C?>KkF|w z`l?-Ht}IkoCEKPz=kV#=TKxmaIdsontCabR@x)itd+cPaQYrHrwFFlPZV4;$#3?}P_)Fblp#sf@mF}dXz*19ODy*-VabLDZ@dLtw*RdUgyCQ% z{|E`uyRA|vAu$+vD z&pnxcH4lne)t#?u&Tl{{q8=%p`Sn+|lQN@zrws3?f>rouFnNg#HC*tqM-J*iWs_=XfsU^C9;1)~`Lz!PBydLr3D=x_A{pZx` z?>H1zS?V9=K#5*+sMc^(nSpo1ieTqjqiCaUQyjH0PPD~e@D)F#%PR+u#mq`jYdLBI ztTYh%)$v#&?kkHO^2&u|iN-4VSF?$q0?Nw1-HQ7p$SVim&Nt1j1&BL9jyPXgg>VC) zMEW#igD3FBznWEvY9f7PHh3bhf!R^yA;<`Ia%wJQd%k%#y}J-ErWr6-QWFEZkpa3q zG+J1Kjw0X{t5mea!8o@f9wxFo^yyG1r)sdi;E&C&)yw)^_CT5=2k&5HU;w;xcC8-J zKT$&KF%^N(uSxRUpK&)Pr_MLjCgbJdn|QC;Wau;BP>tXn`gn!$+R#v#uVv%4q3AGQ z9}f#4!YkN%{k8GhP+OR#Hyf`F?S%RIUE{TI>9t-j6Dw$NA8Q2-KN(v=H}tVq(DT=c z735MhEs9$(A^);%{8dPpS{N@adHM2Lbj~QYX(%x6RpB<)W`}r0pndMk#!hB z<1ICYqn1Ag)rjVr(Aylm8d(A50UvTAhJ%}XTR8Z~wE_p}6h{sl5C6&0mXcUTG*o0l z_rNOoAgl$=)x{1Pw?zEZ@fc`12HMvU^xrJdsK^%Le}F!L1){kQd(B?+mu)cjd9Ci& zUehSk(>NR<1m8QT(%j*V#rp0pG+EzylN#_k!33NBHOAOl^r^?#Zo4v$v1uyl48YsM z_!%L^27gGjj5ij~I)rns$>g+rh;Ig;la)vq&yg@(Px!T>GTvB~-=WH`>=;@W9E+ja z9Yf0=;k8SYJk9}B2qnul{#8H123}f6NsYunJzWZ3?CL*QZ&@8MwlD=1=_n`teBhZ@R9X}yKV42G5Gh#!~c6ceAE>1 z@eA-%gt8KB6iOV$Q49W6C%4w%%0&7~RSVZ*$cADE>-c?WOEg#UjpiKridT?EW8RS% zPVc$VnyOuY7Nb5twvOFWTdA1TAl1#}mGnbiNr&MpNtf@+wgYbqb;;E>;1|V!PiY9e zOi!1J!>B~S@xuVVRgggqolYRY_=;Dw1Mts&iS>Nj4OY)DY6$!u0**=q96t=;6CcCI zy6{3n)N|DG(W1HeqB%9Pf^Ycb)CDm_b<)$JHHwf9i3w#9tK{S8 zrpo2Fu%t#-Ae|6zX@mTy7?uV#g#76l12XEdg(4YIC2t`hSJPRFWV}^%G2DFC%fd~9 z0TMe@w?wRKa{)F}XkFu_wNgT)2X(z*fmI_b^3dVoHt4fs(4X(t02LW#hf$9$#Q#9W zFtJ8%w;=l>EAjzZvO)I6AO{S{#u}V*W!xG>O|eGs3-GH1wYRh2^Oq0D5aNgdu7z$r zEEwI$ID{O%i4cO97D6ULL8`g-^)wd|&$EHu(9^>65*yfQ1XgItw()-muy|=n0vApp zNx)}Qf`Q-?@tWP|&QlzJ<-=+1Js{OMt|$3mVj1&0 zAUFSh?P_#?kDxm_c$vcHK&=6kUSP(nfcuCo-T`{{=#^x`EM&WlrXt4|nb?z`nL?VJ z43%*O3LQ<+mC%VBHA1e<{bd;pJq zt+2hyr`1ZyH%=wAzC-nZep>q+rR1ALCA3~vN~#kT$G+;`s{Cd&pyek9wD$St%P#aX z6m^Lj)lHR>ZyePZ;O)&?dp}|;2OPVVl4_??@=X&mo}9M@@sk&*Y(Rz)#nLbig~E|+ zDSs|Bv`NpwK6^D3S}}FeG`9!drWt(1oJ@EZ8^$%iLerSNzF?9P`k0goD!a>5(89FO ztj@KjFy*;C@|M%{pjOcG(&L=v3OYcsFn=4i5%CcTQ`t^^5ul2*b}$7|^s*oE$aAly zo6rhgQ2>IeS-0>x;D4;*^j`5Bh zGiv>UXTC_2vc5=@MtzYcP5L5Dn)5}Pgm;!v$bV=vVz=0-+Htd?=@9>_9+(jKd{`cC zv)-Wi2S@^C*@UPfhb6^olvCTxf}dxdJj|8+++qpduXy39lZQF`i5JPU>f~W52cE^( z{B3n|{-^Trbrv+?j{fg*}+Q2;TX^ zRKoDd|B1fo`~D5}O`|XRefp-S&~~HxCPhnmCTpow^~*j(e{}0m@6c6IL=s4_I((h2 z!x`~vqrHl-gqdY9qCr`Ns8RT1Si+R}NpBc$!S1^~PHnUURQlFnBXa>llW49UfWgYu z$b0VPhDZMb^lO;dU<*V?5tl04kNZY zZ`kYn4YDljN1pxP`ApA##nG=Z&;Dg5WT9NS(+)@>Kz+{c+5bpMkI4K{@ZSp;q^29u+Zx$2ldevul!X#nr*IO`&rf-_&dnM+>1c$0Fyc=IHMbif1%Ph z*l`(o{Nl|;^KMyW%lC)aj%HM1VeD`5^Gl}2LIT`PvPZv+%%e)E%0aOOpp8I$Pa`hl z6JRqcQ_@wIm!z_M2lSM7u$?S{HOa%$oN{GYrS;h;BXqM%V9ZssLlHwk^6 zi~?nW z6an73gHj4#PiDaVGQ3Ai9CA@R#2@=}G?4wXtbL0U7%N2>cn1YCcPO3K$wedaTHh!a zeG3BDHwN#=Q}~}$n(`7Ni6(ZJISTV8i9w|zMY7kExk;c_PEDReQ)A5gZ_LjYLY?9$ zaXYH|*xL}<4K-?onww>B4iEO`X8qCTqWhb;ldC?ZMQn`9-Xf00)M7fuu#NUkqe*#K z83ytv6Phy^}`n?jTt%2WovhYMt|NC;?PnFhPY&bMET6NuP5$&?dD-Pk}WQ561WZsF5EBf$Xsy?4x*5$hZC zC(bc^))e-m!hW`!z0N_Cnri|67@PfPy|CHe9lzNR9S#??3O=B~?m51j%P#=`%ELPOi~I)03s3#}=Zk zJ>8(h&W{b^we@I^^CR#z7GB^J1gcb4W=tY^(B|>pg}}WC;QbPH_z7{TMgIKaW(xQH z`8?@5l-$Z|Ct)3y8R>>LDvXyFg0>`n{*oHKa4r1~;^wR?Mq`Ao`sWp7S$;OqfqyrevT*DBm~7%H0Q>fO6iW9TrnLPxz8-0)9YL^-Yisai0%A zdWa0VYxCs@CcBdo+8oziPhY-B@_q=77umv-MMZ_~x(}s7Q!}JsGbJ?DBNe16cfb}r z(kBBy#ww9M9+ma+DD2h@6{?qVKI|!)@D%)>{_kJ(s=?^NcI*(7eOm9%Jb!16&iZ6z zZi@Ka(^wy{gUQgw9^0*y6}fRsmLO$F{>*P9MQ+@q>8`(YMqh;`jbhnQ@Xjxk-23=f*sf*%TaJbyq*s5ncDL zrVuJdmrJjX83FyJ^HQl=34ok7>aHYI2}cVa46rS_E6ok<(pKG-;KmrYVvGWw32B-Q zQcnXZI9x|N5uQH99~;rU-Ao{%dAdNtr~3#Ah{}nmxat1PDEU%s(OnN;M$W^!Yx-r2 zBqo9wK*y3HZNZ&Bx#q(^I1B%E3$QJ86u{=KyV5QLvZlH7yv#VmTnK;0j_;9cID7yn zYl|h5pV?!@BkYFF+UPbd7U>_0IhU2Hlq>vY3O@k4!3wAIguHS9!k{5}dy)vzJ*?E0 zyS;A$1@<=29*F(;ee`gAnP%}tJPnE%)qOoC`hqPH$h}NtYBz*sWbX-;CB_2v-$qI! z+H|jdo(!E*tO)u}1hn-Cl+bLuFEwWSyi0+;a(>78VwPHd@rw>M6Okh`7Bv%#8j=T? z8YBA;yyi+GiJRz8%8gepmH6S+v|pB=wE1gkDPPc1BGpS-P9Ev$ zdTeTZ>!g46@{K;j;Hzs>DH-uLDU~_0AR)0xc*)@Xi9>pOCZG?M>P zOBvX4sZ=#?b8LT4!q(o+3T<*+VSDYCI#+ijTs`iI?F9Y1V+jt6cRu&m`o%EZbsYlidW}B_TWmy|CYk?GL-Okxk$YhCy5+SE)1}4ycVoz z3v`oX=F|NHB0=!b&R_JZ?bl!f zuDLcF62LVdyOv6Fkw!dji|}BhJ)x2x^dd?oT1e)X>?D3Y!5as^%3cvt_OHaHk~vfZW?FrS+sHi;*@U}y{B zGUCtN6kuEZnm2*cou(SwBEJOASnN0uI~m(nl6N)a%IdBdxe$Oh^4I?kI1~fm>yc2N zlY?EpVI%umY*SM;=eEmfw)WtUu~{y;k~ShdLTY~MO0joZMzj12iKc*eZ%v5er#~Yk zb;P}k6<_AM!X>l;?N3GK!D2X6a7TNRTGGn=#Vx=y%gCbxeqEVIRS4!m_e7<~BROJT z6xKH@(1Q#@9>}~S6%ZthuXV2qWpe9GY`XphEH5wgV-vY(Ygb9qH_JtxFBX5# zLon*l^uKUq03{9NrmVTj5#x&LC`fwV3LOnYt309u4$Z zi!9;tyneC#acYmCd#oJp?L_wnWRN5hz}3AfR~&-P}Cul0^3uEv#* z%BFZ&VhE4^@X-RNJTzL}JYeiiAvA=Ltj!hHJF8A^oj4O-+btE=TPaJNDd~^(^@q0y z5m(hGA^dA8)m5;ggisRo6so7PN$HB?E5%WPp4fWvw#p_UaH`RZw=vE}dh-9LUc~V5 zzd0kK7mA*{Tn>MUtWeCqN@0UvQQ7@(A)U}<;!}}P%M~P_Xo=H>pjCr%kq}_A$`+U; z>t)ZtZ%$>4O_KGpiQU;0gJLHpsccG8E*qP!vU}14CEqlGW53eLzY1Ap73N>wnuh_Jow|TbT>`>`C|CNuyVd{c#M;(jP{iY0}zF+%w(p- zO0xwko%`WQUB}_9YX1e2l&SLx8%S_){c;dd3}5>5BFT^+z=z`mhilrV;5@n8yZUG1 z4?#L>w!fJ6?8`4Ep~4a){3j05fjjr|8ojFE0(io#5Zb1cA3M@vns5IKl1A==T${+l zf6WrR%z)08kb{B0)SBd+QGE4!>hAcugSb-s$3@imEBGVwzwZWbhqcBRS3_c7OAONz zABH9ya-h}EXO4@0zUW40M!NI8t5Qhchlo=AA46b%L0i%Uh4~kQInP^x(X->K)@$n3Ns4@QVq$#}>4reV!^!+g3e?&e)h?y`_*11yI0ZO6o5c3)P5D135w3{l=R><}X%g_QGu z?d#n&+X-l@F$Rh&LL=Im}Th3Yc+beD{_S?O5;o@^o^sWXT>utMG z?w@+z+;(9K6Y;qx@bo9ew);#1CcV_!c1Pivw%uEaiwyY9ZTGp+V%yDSrHyX8m~%SM zK046QE9{etkZp>#+!YkNe^f^1(Lm@_qC9stQNet%)rP^D0*q`)RTfAJu=#j{o6CSU z^)xOK1IQ#(a;OQ`oz{IVwoti)Ps0Am6vv+4k;KRGGvL^UpNeA-el_|n;Mk@(_8^Ml zdZ=i_>t~> z#M}o(JPjI0V9Jgfk#^-@6**@7bG){#3CEn3%18ld7eh=uGO&c~Ep} zxguPS5Ve|}KB(t14c0cKO!jHL6H&ygFGO{A974|k1dnA~`8`h9m8HDw5p3eMeT}e* zo!uerSE8E71IxYhXi@Iq2XAR)#e#aoiY@JeKwxl4F!fKi_1iYVTEDXgH&`a;-E6F1 zIZR3JA*+iuyrt?Z94IdSn3i#Q4US-hCslL)nr<%R7;Ewpf?S8wq1mMXrpD=JRWo5q zhjndns8e-fQ9CjW4plWBHyoJ4s{71eMuSzipV4)`@FVI-?;7GKQ_%y>Rb+J}#!r-H z7C$*3@?(8|QfM??+`-@{m2~xM=O?2EH9*vl%74#KcIGzZCz#?!_{nSkXuwZ4&i}u` zPi`6hJNZdRbQT#&|5JXF9^)tJ|I7R&J)WPWpOc@AoL7&Z^ur2_=O?>w`j7a@s~+Mf zH$Yy9=O^zUi}4fONBOkgjt2ZhZzcFiy9DAVR|y?HAF-1>W_AQ@~<`x`N_}Vl$z_gHsB|njD-ws$pl9u z{N%Mmf}gw#izMPA=i(=R(UHSd#7{b*2b!z9)sYxKIo`zLCvb^qz)!jvO=qEL$R`c? zNlIP=L@o9G_xxmbpdmlO6gR?8Mm*hspG;=|H~2}DA-|KK>{0$pe&UJo6VLxLKk>x# z6VEyMN%CLo@sm@z4fsiM@BfIO48s+j=B%NMxj6acuDTdM!F9h+>)oUQKY6o-;3u0; zQxtVahLBHM?r4OcT-%xWiK$B~>HwYsyGfiX0yj6pQwCcy%B7dv?d@#x2{QK?=Zo*v z2Fv6j@7ejucaTqJtR#NY>3cgr8I{_QpFB$la@~>&e)6b|pQP*Yx#eDkNymt4!B6hE z;CJ$q%qY;p53Qi?Ec=eQ%I7k1l`rw9-l^xgGfT`<4_u`iaFxA3iVhrr@e#PnrUp{V z`~4cA%a;SL@~v?OnV8$-MRD-yf+ko&p(!64`o@KHJcylt!1Zibl~?!;{_+D{+ zP1YhxQUYvgQFq+H+cl0C%@M5SO**JO9?#aeEBbPlRbd995QP~1KdD+zNes**B zfcEfd1sa)>8gU5HOI58W4#^~G`;m0jP!2*Bn3@=Z!X?1^2)&@<*c)(c{GTtS=oR98 zjLFW;J~Mp`>7{Z_?J6DlR90*oxR*`o?q|cgW3=F7xt)&r!~3k!dF`V!w4P#g0llK& zbDH?AymQ#%Z*mdB_uADzQEIlJ)Va6+s_WHLjMen)JG7emA2_J1 ztf0`;w$xinLr*P{RPFL;1~J0hlCfQnb9bX9rD(3P$yo6?kp)uzP^fB`-fuZpE@TLYm3uHIW`krYb zNeigUa`;`+{{+b>27%-IXDCSj7RU6i&M}zYC}Mh+JY|(6rq}Xu$WuG<($x2OW(lTu zc|E3gz+!s4VYx(&K4o09SU@c`&O2(OOiy&u&h#QT#+cqa*k++Nz}}T>XL?n%7M~L9 z{VAw-;<=xn-RuLe^RlTv@H&$VG|KP9g$AxLV*F0rXW04O|70l}zYDr2gW(NV**uKa zV0lX1p#5x^&&#Ix%u!mrPW0JpADMAeW8-zig4oso+sS(tVy=U|z~+R48%n1uu-b4) z6mf&FUf#`WoXy?aQ12v%%b=YzbWa735|62RA6K_Rws_)Sw6=2oZ5MSWH8a;%Ock^8 zLOMF#)eMXep0HSaI68GX3Q?zC_@9Xf#7djosz$GR0J>EzC9xfGwI%HuaJ96m7+1r! zvQO)sP*11~jusrvQmFN}24yhLUaFSzY+GvL+J;TM$zx5BbgAWTQ`tI8t;Ply1GUHf z;BC1J&UzV~<-&5qf$-H9R~rC*6olc0xZ0CK^s_BS~Va`nNIfh;I=3cH@@#svGH+*isDZUV}`? zUz2W$=UyATC9Zaog4CaR)Y4lQfo}^w2~R_ zF!@3(EZE;KAiglb0lq+i1q{C6I^4(+DE~{r7sj@z(Ls|z_e5(&U+!IvfWU}{g@&=#Q;qGOT@SG-+O+Wqni20=~gP3oIMJw~U^Sz`mh2eog_(aY#{@Q?? zpPnKRoLY~Z$5`Zyqv^TG`Evj7BJ}g6-sto3yi$^Y2!c3j0voP00U? z`1;yIu{5`Q@vBgP89zi203|h?qz0w1`>JuKBKwFp!GBxgB!| za=&w;L_+4H5~%v$m|t9t24j~EVB2h;Am%5U)qs7AyXZSiMozBQWENUIAfSbXp;?Na zMmyA#=f!P;xa~_h5Zj>)O|AXr$CSkfo)A|W6YUEj1bOs#(*HFE{SS!IKjcw6{f~5K z@ELO&(*Gl3LR|kH{rCR8^xyrzr2pTo-1{G)|39qX>-=y7`oF#*{dYC!pNs|TG4lsZ z`hQ-~{|<}(RqdMZTF22pU7O$b6An;8a#y?m*Cj%Oq-d@Oe_bMZSEtdu$1c&?ZiD_4 z#c?;r%FnR~PRg_h=BGAT1W8}T7J;E&v|m@4i$Fb!MNm-a&-~U>M>(O667md8(d;H~ z^>jeb|Jhgq+ha=rG9fJiQI?j#)FM*}WriySc??HD+5+0wS3==DW~gLH7xSMgq5kJpOTVv0+kxzVQ~~wcBr(}Ay(Qff z$I8SG;VGllfTBViyj5(Y9)U<{-mF|;O7Um)^KMNDHMU1cm$ zidhdU8HG(RG{iNSrik*f6nd3~SgXjw3;A;bKQvLy9aw>Vp~C7$7|I~FUjxO7fM_XB z9?d?>LPhF6yW%9TYiyxjWG++~7RM=0aJiuVcZw6SV*V%9A-}Ih+Zz3UuQUPcr(i}q zd9w$^Jj1uA+M%#xVtLm78OP(1?g_^I`VQmlGx<+qjgkeIxj@I+7wD{Iv_P-gVq2ij z+m4F8&>j!@#TIn%8FCcsat6_~P>8hu4*4+aDMZG6Di-KnzaEUqies$>YUnU-jV;cd zNwhfcZQfvUe!DBSII(RtqAih&Iv+9@rYV`q;q*hgrDiB-A@mE0cxOqcw~0oNCN*gE z0b8RurB$t|(RE?G-Xl&i@l@A%^Y!sp8;p`1=14J7ce!EApLsN3TG36b(S^;QOlc}I zqnWz52l*Mu3!_RXnux7$-d#BGnfhhyvWn(>G2v?%m$SrGHWAib!AJ@8-jxO~=}64e z=bqSznL8wKHq8`yO-n}p%6)>oYUs`}W^ebL#YT{VrNMq*Pl591>jWE7&!xd=er27G z;NY;2nQ9*SkXRi?^10zn@;nzkED}oBXYj|z3W_O#SIIX`ysRQr<&=wFh5K$*l3avP zU7@O`!BP6AV5iWDrg9j5n1+d*!tyMklqnvT_=Go-SX>2X7o&vD=-l+P3K`eb_VYpc6NE^%3KTuUqrIQHf` z)(7-Wa<~QAZ3f*F45Phc_h7<;UP}S;eb*TM8BE}z%Y@M{xlcsvky-X}dG2#iq?!l1 zD-7dezZ1sArO*=Ij-a8|9#~RsE;Z4pUK%hh0k8a3*Q=hb*7Z!CcU(-2WoMbiSiGx! zm}9!cAo2T_rjP?{?#-X>H)Qat4|mwt>83)UZ0|L&6?9Lms@|f*UXXveoYa?m=W=)n!2xqW+?m*iZn!leNCZ5!5XB1~ zT!{7nk1eFmLo&Y1E&Q3s$;%R6Y2Hy3#mkVPaFTzk<4I~ItEW(wF8=~vWn05~K{GyX z`7e6)Jl^ZMU-arZF_-3l*ODCcJ^mOjPcI#L%Jld)c<=80@k*zqxOe}i{2+kyY|#jJ z(2%O~blo2AT*RL+v)KPbwD!VYU^wNOy^AFN6JkJUy}}!j#r~p;n@Cbf8HB`rN@Q|3 zC6b@Tub+?Df6gaF-Jfoz2=cd~?pvtKHc|z%bn<+0Z0Z)DhTi%Yi{Ev4f$7xe>0-I) z|ABb%S2!>VGvpL-mBIi1Dega+2Z!_@U!&&?zICW~2;4I#*XsJJVmLH<=9@D)x|8XiITr4jAEYCzLoTaD;6Zq2s_s0y zr|ly(ME(4rbtrd!dmPkXn-~`p|1Q@deHBFZ9)0tIZF5U01$CEl6ny0ekCfrN=`adET{6Mf}8m*kN%pD6e<_ z`nGwTNNy@gezrB2ZHN_vpFjq`_*w){L`*lz)N-7!#VvStnH=8j#1+gMq29Y#W&NNL zc|d;(y8#9>=(J9*aBrcUUaC;A9o%_U{T&IPwbu-9j`qi&qU-g0Lq)UT0F%xUU!1; zj1_DJvpbvo10;pm zw$P2>;;QcTa8cp@4{&k!uY`-zUmN1$hAlB%#MHTQxR^q$wwyozIpJcJK_B0~Ru32F zIR!4>X<^~woYe4fXA1++?lyvfE}8W(umxh#AEk!7P7?+;oNkDLp5-wN#B_Oa7=X_- zme8}G5eD`i6V!0vpY<@%I#FQYt>(WU18X~37{Dp15e#(tb3F`fzVtu9z@4WE1M5yT z#K85NV;G33QQ|Q0aDpU-rn!|Ca`+6X@yhv=I|vyIx8f4)bN>0O^^lS15Xg8Qc`}Ft zo|_!r5@#SV2WU?kLB_>b*F(nIOMVwJ`dQ4ut7<9vCkYuVPBuhFmrXHb#Ez{tWCZUA zDLl0uqhCZRxmHQ3*jcvnXAd4kfHc8^Z?anKscI?TpP&}|G}7XljjtpK# zH$r~y9HiWGcc2q1PhR>97^qyd7Jk{RoR4^(F6^OS%UJS@EkfIIIh;jh;IIzwpP)Ox zYI0L+I_@NYrr+RCmvppf6SwJ&Y)A92sy7{7Ga5{XiI5={LR2fXR!YTj!b_(U_L&f( z-}7ZLynq^fS_3xy?HOG+XlsIb-u{j84D?vz5&X8n_WE(xdgB@0;g5~y%rP3zh~o{% zv!gUNp0lvpHh*k9Gyi0bM{v&u<2lr&-gxF+{Kv-ARg8xnYd9W%U8Wn&~F&%0*wC)OAyyY=GhFE9+tSuNM-ADO~@u4-V>RBY3$ju#Ee+$ZhkjCWVeYkkaw{c!VAk{`g{@OU85s42K z1j=cWhyY4KcMd&OKv_z<0E&f#FfZXb)cgC~V^tQ&P+2r{d%ehbeQ$t99pMp!qiI{o zn9)xb_IvWm3shuFDCh6|s_XL5D5WVgLf3^R4-zWpd{Q~jHZYAvr^6I=B`g*)xwS`X-734&Q0JJ-yXmrR2v% ze&+N!`z)`#!05KhJ_#L=6;_U(^Y!PhY7RG43O9WkFYA+`=o=}n^(0-_kM_w(kc&>A z(e?O#jc**dT=Xe){Whkf`?;(B_H_JmhNiF2Xljp>W0X(2}pDnNK zli_ysOps??Ru57laP-%+0Kv~X0l+JCBQDGyJels7dpk)M`R636t%(TaYgM#hkmCd5O znY=P8B3XL#N^-X|lpzgch??$5)~;6OY7QyImI_hJG&u+k4; zguUZr(FO8Cn#Dl;ED8+kCAnH+p@6DnZ=AHoVA$LG*XdOQPR3mTA)ex3DD3ZZb7kgF z>2&4mTzQ_Mr}sy#7>YkCkwFm5ezw%~W@zN&J4xP1*cDUL_xc+025$OnscWOZ;@<1? z0IT3H>bSAnDqW!bjzzW%wJF!%wz^ zEKtc0=+w4Pet$o|;>;mk36<;e%344B1bW^HK6X5(@cYN)qPfUhWZlPmKf+1OTc{U4 zl<1RJBAqQ?+zJjr)x8f3Ng(&1ChF7eC0awWUuW-aj(*zx;i-)01ro~UG(6u5E`p?92nVs#tu>hTGZ zR26Q4pud~sqK8}HvfYQRe4IPqt3@D3Ay{uM{r%9rAG#Ez5uwPkbS_mQLo?J!Ur%7i z*J@-;w_L|2H8LQ}-{TF~2Fc+|nnU@s1(>>_Ck0s?f#0`>e$f$j9{_RliUuf7KLA6D z#*9OXrZm({Pz0oDP=La6qY$MpDj-oBWb7U79W`dudQe;6^K10O$Z&G;HH#%%NJ_cr zFf{Y}dSBM-={TYm)Zr>bFIU3*X56TJkN^y3V7g=TEw3!1iCVIc+eNz{CPWV1^Zzj zPqqiIs^pz7#(lNVo#$Om>2jUGB@RspB6i`yhTg;9h1nHGvwt(r*^^Dhn^PmpIl z)|MGB@elBPJ7wBi^(TM+r z9tDf#xqnX(8Gp{NehSgDd!798DR`Z-tvsVet*$JYc|ga4aI90<#>?qvr*%rniRMbL zlL?YEqrIXHOrW@wTa}Un&G}S^!JVEZga563@5w{D{JtS0^vw}ru3P&Y9yWNHab8#_ zcdeb$BzT>|2IR;?x3hKf&`qE6!*Z&xrRT6BU%3tcZ9XgyD?2RbZ#yiH{&c)Ne4RXe z<6*hA+R}r*2G7z;H#T_rxm)RW?p6?GowqtmD_Lyt3+HYn>)fqmDR=l6<9rlapN~_* zydZ7pmHd|tVud6cSoO6N^z;RVRUvvhjA@Far}7;!dMaOApPoLVTSTf#VbtQPF0fS{ z+n{R5aD@J-E!O)%1mG21vr;MRn}wg;ajT%mq(rha?J+cKM!(EW3*?pS6n&kd1@eW^ zXb=SQ8I6~RZ{}1aU^FdrgB4L3)lQ!ph@U@pakR-5M@B@_{RahNwcl3}huiRbu&11nk z$1jjqmMhs6Gn(hfE5B62M}xO0tg>g}!|A;42#W0sunKwQHXmEhXBE`w)hY7IeYvcZ z?cmQJCMKgg>Xc4({PT4}1UN){S0!ITwb4kyGvW}9%{&)j1}jxoip@ELM-S<`atDQC z8|j`9(96{96Y|`fb=WRZZ0fJ_fTV+R81{Lg8=J`C`9yy7@%BOD25nmGRfif~4;^nJ zhbNF(@PMq$?a;tHsgOeY^`)h4xso8xqrv1~Hk1>77 zE-yvV*DKj$Jo4PpR0-n#6GD?9_5eaLJNYUKl~T#yiqd{Gj(;?^e5%6%}XSHAYbG|IIQb4l|d36OB7hb@vI4F zPk>NA|G|}w=RbfcYUB9{exJQpyymV^d$Y6Hdub_=O-rPzad*e^AEZJxnLcz?UYaEF zd+#=lx1M!cW_USi@TFJS&nhc{0@)kdq-SnlUG=MwjWTrC$PG_P${ojN>ev7UcU3iK zlU<<&g>LlBz9p1Hl0{B0az!$_TJ;D1R07!(@-Cu)X{*BuyO0aiAr3 z&@3giA!E#X98%!0#`_Ct16yf0T5tg${TFmF=hB!6VG}@b4B=KNeNXIddV!2?_7IO&)gJ_ z%1@TC64**wSdPtiXiCy~3Ok7_mGEZL6wF+VKhPA=50*fau7r*^d8D~g2EBt+-AoBZ z&nS@ug>B{&4-ykq?x^K=9z3M8jmpe3*eDCq8q&n{OO(jF0&LLTttP$D7JVI{U=(2qx`t86C9hNF)zLSMttU{m^rzQxK{ZT{(y%>p@R@DT4H zBcI0`$mem3B=KY8OrFyv!890Mo)@3bV-QplRnSG{+cSE6R`fJ>z<=WpIFq6|->v{H z{@5~37uCHQ^7v;EE!$FfA^QP$tHNse<6mO;Es()LN+;1~aeoK!w-4RYEk>k@)$qVU z!rbEnB}pl}sT&jqk&lo!iqEwWF${A6?QH}2 z>8*OZuBthe5Y5HF(9`fF=L4UCxKY7h{TIlzfBGwG|+Z0LvtFeV=Z7s$hVROa-J?qSZ_Qi^F1_DE|%f3Lv~@UYce z6#ZQuuFdD++LhjL?HnHV6sY0aPH(u@;4Pj*sEvoq?Yza~06)wdu9ekrZIMU+7_5{z zYJKDn1(Fo5bj|mMYnOS$wNY=lcB?mB+v*M1uJMLzmn*udhHG3k-f-=74_n=WAG19A zt~H$x;KsW=u;@wQiCA?D zQkClNt+rQ9aI2SQ2F~YZj7Mx5j|?Ry;yAY2c4?L3j@`YRM}}%xQIKI<8f;~6*p0WF z51Ivrhs-$2%5M*Q#S9JE^= zMQ8hs+BmR*_<9)uEd69Tqk)RBItuv}$(wYqNG%|xL`{F&c$6{(Zsd`?H{TXbibUgn zkusV`@;IKzfD7MA2O6903MnK)lE0h|j<&nJH*(snP<@X|GDv#v-)Ecu@<3l24Jdfl(O~JMZ zkSKG9NGarzym$JSxoK6tq`Zoq8H!TxRp#mJ%28g$j4Qz}&A?gOj19%xwa<@WR9yqS z`hFgsS`PxlKV~`j2O)jlcJQ(|Bg*PFbN?2g(e zrK)l6T&db#HO^foWd_dG%$7+J+XLLqeJQwf?FEWaMd(adW5BJw1&_ZRC10f#sjn8h*$5I`)UdvS*&~3)AH$l#R5U2qY z=^hMW`zzh1*WJq=dV(Ccw(!rla^lra!0*WQ8JfP+czf!nRtP3gBbQOmcOiP!J2dvf zTks6Hu@eVxFLyVw(4zwZwwW-t^twt3I^&vc7fHqY;_sX^&6jb%sO~rmZ9ZuV7$k>H zr4(Y2d5TRnT;`e;|LmA)A`Z^PWF`gV5N?Ob_dhAo%=tneu)5vHzyaE1O#f**V5#*a zbmPw)GtJ=fOjc*hmZacuIZ(FfI6@+`&@$MOD8XX|EELM2X<~J^4xrQTp_&zvvSt8T zx@n9*)Bz=b;IU=R0z*;5C>PViVJ zt81qRTR;mQ%YlKWorMM`TmCQys<}!g%vv`YXWf%8>4-bDGX8EhZQ~3U!c)uQm6?(R zJ<<49gn9xPp3TACV?wD)-{Euj`q;P@UnsiZDjo>|eSnZ_WUCgjIl0-$8kS_^W&M)8 z-xa|+erwH#e9>_r7%X__1(MWUmxpvZaEk~Uf4y&oWE^!gv0CuB zUDF#CeIJ{+#~Ut}lXwabPo2fXQ+u`G@dEbHP&;naCQaX{=sR|FDy(6nH$1t>Y+V>L z`HuH_*yG?4TR9>2VUIoj48l{*cv}g6X{V*8H&Scf@YJW-^)YXF>LG701D_th4z*$iyVuWvgT3 z!|I|FUUy5)ruc{~EQCzJpbmtU*%r8O(Xp%xu?68Qg1U{^yj-6;3*&0xpC>Hry_H~&k261FV^pVhsq z=AAhCDh7CkIPOe9_{g6GLMt`$V1FRogzYW#$^J*MI0rr=(1Xv(QN@{hFf-KyFl<@f zr2akFhSh@jDgUGPf1M$YJO>N?3hD!)gVj@X)m0OUR$rf_fm&1-IOURYGYBWW#^qP_ zrf?-rzxHsYt5hBHg1{Nz?aH|8Cc1+^ooC&(p~nuI@yjwKsW}9i7^4m3;Z6rKV&TU- zjn`iRMO5SR2VX~BQec=N-vrhW72=V+j%0mTJw|BdoAleN#fjck{zZsZVc{;$4}C{? zYQ3VjCu<3|nql9nq&)*Sqsqc-B&qr+5B56e6?r4RdT+$DibwJyqVm6^+BW;QBwU6| zF3grB-M30FuNSqOZGjuiwm?bWMG%Z<28Nhz)stE#*rEK~H7+u4Rj@bXo`EeB?68vT z`o7*C8TaR4Zx(wz7K{xJUuW;Skj|a(Qc%iW1Jv+u@nBt=s;i6^$6iptZ9Fn|R^UmA zj~Q}T;7KVU7e}j9w{3K_y-Ia^M`s4kOVK1kv4IC`MmwbHy*x5Zozqu5zOKR!>VX~VJBT=+*d>Nh@BYu z@78>xx!(=sXhG99Z=^Sp{lz-sx_e&3mv5oLcSCwka+>mmB=YSrTyMgx#<$S8W$i%| z%@W=jTtoBD>OK~0q$dcz8%|d&)Ut+wtEj7Yf7oPm+xIJsTT6s_UnUYm+A|d3x2HW zCs+eB?ibY$VGSdUhf0A3G<6L&YD@DaWzF{l)_-U(I10ST(0_dp!NoLlOZ9r=W>I^~ z>wpX|GVc8KLBhfuIMe@5Cm9*R&H+Le`-_l?!9i8u@**@Qi2wmP+M&;fI5C^k3ycJ+$X4$$){1g$uGqF7eUqxUgezS#NaF(I z^MNCe?qdP1v8t%=t783WRXm6=KeC`{-=T6+6n~atzq8G1ENx`D? zw5mE@?1M$}xv#3{tg33Pssepgje==+zg`8?s!BfhRrM3As_$D>74}ti&S_PRPOB>U z+*j4Ph~pdjK*0LF$zqgyCPT3BkXR$<1Ed>a1%F{V3Gv$N#F;;xN0yR}v~cGQIRv@G z7~e$J5xH})B=hp{Wy$bf{tcvh|4D}I;B4w!lBy=g(J(4)H%`8UbwAtX_Y|95gXjtO z%XF^$rb92Z?s>wFMWnjAr|~0vT>&wDczA-$$M_1W84uRV4oz=ij{wUk&?ne~#$a3q zi|2!T8LWNU!RinLfHn9m59x%bER31jj?PJuVI<=JV=7KE)QGBYN`Yx@xd78Y%2SIW z4;>LR2<;f5T=UvL`qo48xexNcN0G=R6L?anZT`$2=E!rr{1_|{hM#C5&6tZj!Jl-; z=4CUvsq1@eN)-AW!0PU`^)Nq_R(e>)dc1`0IlbK2!=}X$pd7+DHH7PuyJHJp?aK1$ z-N6O+b6DtX$j^g6k~IC@16YpTs)x%2s2(ayf$H)zf$G*UrPNn8+nGhtygnD zMgtk=Yb|G6Dv*Reg!_mVWSN&ngaGvW_dQLd6yE_B&oVDO9PGf5E-VsCF7T(ogSAn~t9y)qN7J`J<8Q22zb&fi zyR;d$CB9HJFj#SKcpxXCu*+-kI;_s1}}J2fl+6E6LFQ7CWEO%EOa-5jxS(f;my}c*b03 zXN#Q~l0+f`9`^MnDQ#^GZ5g&WLHmX_32F6qaNVJ0O?DV1Zwbl(Iz&S8Rrll*4{0$d zy5MWXqhKNMDL}+5eM{&nr|Wn7^bfsb?u7XiQ8dCipO7YdT?LkXUWf7FJ3W@mOvkM0LUoc#H#V}7m* zW^GEXAMW};iuSOI<|=k`Yl1m*gI)L1It2c732~9Bn(Ow%u))#|Tr5lmxZHJ()yk+d zCFgeyw~`%aO17Wcw9fU#P^h6unZttIy`X?C`4;toZn6%p?=rFrNVDcH@0h>AKE8S~ z*Qd$eF@J+2pMb_Ai!Bq<&|11p&wm97DA7%%bAUUhz*rW>ZMjr<1ENGPcqu#0$52fu z8aP`s*VDv$-BmJMGM%LDo_x)0vEKHwC2r#6-Ql1kKsX?WLq;RWWsf!DaEYvy`y__l>U_s1;qIz>P?tyI@4=)ro7XmZy{$st{FghL?MC5QZQ9f(W0OW0^}Y9kH$up?H!i>SX5iY3-Hjyi`T>p(m|vg&x;p8O2vz(=tYN7w^Ts#va%y){GYVG1j^|EoENwE zzfmvQEOK9HeOGNd6UGTI0|MjB@uWrpjPv>way}fx(>shjd?)GL7cG(lD(~`N9!o+D zaZoPC&!h=4RQ%%5A5Nl+K#>XCr2c(9wmD;8x7k;2*MbWL|0N0hQ}InGZp`@rVt<&w zBEU$mQFP9yrlC)P(~{bi;9@UlOGTuhnXc&;zY@^v1@uz*$0x~Oz&|c;?>6<_i%b$* z)vd^oq$DCjc1Yr6H0}w0W(IprRtG&>9?3gr*W;4jYV5oKI#$ruVs#6U0&^oU{n6-- zwr-ROIJv${Z#7+z50W$nTBm5t>eGXOJB!>e|q{l{w}EPNS^dltm6aLtY8{` z`|ugmJKwustmF7!@V&*zW8adz);$-=zG&tXNy`(VhWFru2hHFD`{3#keVLy8>5BfD zralO-f@CAI{i35J_XVazrV3uGZnV?w`;Z+MfpE z9dE!h5rvAUqvCI1`!2XofOzqr51R2i2uDes-Phu!$q+SOc=eF>xa4i ziKqA=lsad5BA%he`;=F~!Y|&g=*LuOiovdaI-1~Wc&4kwc*g_%ObnuwkC`B|rGFS8 ztlJ8lLJ7&?v=olu_futsOUMzZ$_gJL&!8$Re9E=eAxR09Iffgfo}h=k2Ub6Zq-R`F zp|A9uYn6C-(FGL;pe&cqSos(|TzvNG$DprtRE5&hGAntkZS`ZM{{v^;!o>fy_-a2n z*<&e~vAR8Q@mKtTcT80QTdHS6I3nUZ@L=ue3>FHIXs9+nqk2TJ7PE;clYv~Lc9&`D zzM_$>T@M&{?J~`-c|2I_$gTG9U@gzB{*lOdv?(KSo^b>6w#MGGD}y)VFb5dBxN%>O zB(c|9RXrX%W>bP6vQ*k-JXi|~jM^Gx+#oV`*^P;KTHT7C1P17yqLDGZ6?rqNa~8$T z2P7$2TPiVfZ{5QjwR5W2ori&tolLNgj`pyM>gheqU+wQFdcd_)(oaDrb+2TsyKM;|gWY~De$czehUoX-WpMVj9C!S=k0-Py=) ziFWYVTiaa{@W+`iS{<7JnrgJdX=&FbNJE()uz z+2V0DN!f@!Q~iCh1`PHF2mveya#t^<|D0_c-f5bu-Wq=o>H!Pv=fL@KhcRh=x7l?C z4=yNjkS^`(qP1`Ci&_bs zPym^YBWsQ?v@cM~8hiyLuvhe`CEAY+6=HpN<2^$Xlh|dppsLeo6}=HJ2hq!4V?q=? z*7rt-1L%+$xP?uLDteSnX|p_lB*}TQ6R<7SRo86GM6T6Zdhl;eMhZxrb4oEXU$8BW zLxOMR*T|AbEU{91F?gyD+hep6&+1!=Sz5pKr|8i$tUoksdo0zD()@2&8%FUBs*}HY zb#uP1I$;R39Y?y3T|r1m(3Rk(EY4um`OG2vSM`^36@jePsD&@sR)MVwEQs~zIv zqDv|cy_r6a#y|f`)H;6_N5~Qv&b~C3#=7}^bA}Bjtk*Eb%rivH1!(iN^d?~ zXD?ch3thPt*4awst<$D9sc=aM^rDmyJbb$+$hCuLyTniQnx>+!kKbgPrmnh5;xKnp z^z~i8vFsDzN@p?;9_1K+ z9J6K(nwBaV($V1!v%R7?wono(a@UzDyh(nUeY5uuyyef&4)o)ATWd9BS+>1dvp5mYT zB=GY-*I!@hpZf=B``_`;{r{W2RlKX_V4C^ErsC~tWZaCWVOQDen95dft5RadkSZni$v~Ag99FN0D$!3ftvt%Y z&H>88j|Qk$L|FrJ?~NK+RZ6UD2wVM$dd1eN*ujA!YnHO`{VbI=99OT{${J!yv^z7} znWZfJcz{};qYgU6RyV5klWo*+{XDyR#csB`5x4xLu1s)QtPK>lw4tmq^y#K zA7d$ZmcGe%@>r8o7HGe3{(jpHM^JpE-3 zUPf|n#pzIhGb%qlbIS|yV=L-!gh({O{ITLTHf6gSxnTqwwRN6N z-_|uib8pw!#O=7c6au&`;LWFR6+yf`R~*&!W8`T5aDA?;zRZ%+aHlMq(=3SLF)VKzytRdjaVGWgV`g5gAWeqc3 z*(z(8?Xr1_w=0qVaHRN6=kefivwEP?oF&B(3#o)Pba?fR(980UY=hG~_ClN2-AafM zYiRfC8@(gjk}n5pdQ1#}HF#Z_XG(* zAE?BoKO27I0_Oe6JcUzSqdavdM1QXsw!1CrM;N_G~gL&(53% zQNc^SaLK2?BtgB^ZKb5`{DA@Bc1?9VISm-UcDR2bW8of(ngd>3X_{WO#Z^d zLNd!|g&|n)tE})hrCG$_aF)4BwBVOE_Fy9eesHzJkwRe9R5xojFvEY6O(sxvn`=A{|+WMvF1(Xta<0N ztoZ{o!Ti&oLx0L#C9JurJi(kZ(KCN5lbaIE>2;~Bx#?Nv@UKcR|5ov`%*91r%}wP@ zo((sSo0Dx2%vf_ZuvTph@r`YAwxJr;TT|YWfB~veBBlZ}DKvA;#VZpMKN!lM_h@H8+*3 zOg_O1|CH<^EiRfu09|EroE1he7R(`v&336OlY3aT{-wg?eF~FzB$%^YN-*bCTY@=nv$MkAAYd^o{L>+{1$)0-U&ySM zQE3RfFu@!zm5J|laJi&JZp}dApDLk}dX9(5`xPdCp)fh2>F;`IxjBYxu2>;4xe*rA zk#)40W1Tis@7c<;dK0W-LxMT0cP5y#b~hL&jYzxgtpsy=YN!fi@YBx1yID+LFADi- z)8XB8aHeq6-d3?fLLDu58(?x{f>p%uJYUpA&$C4h^gJh7as)~;r)Or>vIKL4zzIw+ zM+5|4f;pbYd6i(5%?Vby1$4N9yk*D<-)0Hs^uhmU<@yA3-cg!hm3L5Ol}s)#6|WRl z`3aL7nYnKJ|n{RDG(reo47 znS5I*liy-8pcaCYFQf%n^ILQ@B$(s2$^@(YjaW35Vwo^!2+lCk!pG=CZH>ZYpcxee z@paI!$7=0masVe&_GlsE6gnrlq3$~_6@@YSQDjVK}GM7WH}D#09&0w#2%`xC6Mupud7t#n2qsoPO!=tb|Qg=I;k>8`6|(_DE4gMXdLAWX-F!o*iKpCZnV->i5kmX z)0ymbmD24XAG6vL7ew>1a@O2tCRjytf>mrm`4gf%D-0FUpd7RySYf0jImSx#i$+W+ zL0JM@iNNS6ucy*80hnd|L7}or+;v{pEC4{IqbjVa>kHdq)DiXLmKEubC$h~3S0As+ae5otj zIPkZ8NnxYDfR%iY%5Dbd-x_v;-P|&7fbq@?l(Fe=`2cKF4-{enyfWle*v-*-1B|sI z&+kNKiBujx^01qm=M69(7g=gVHG8oHhCFcN3MrMBma^|@6{s6dmJJ>zf2pwM4LG8{ z1U>}Bts?u{8^z$pj>UtARdiV^nP%}#n#DJ17WdLD?!a(pi_qdY1?)3V0sGA448icA z|76ZOCF?9JE0)tKS!bV;b#`(xr{g4j<{ZLfD)Rn#1271hQ5?QoJ#5sD)YM`k7vEq_ zDH7E78wsccgmE`Oq61C9R&>;3Dk7 z)c6kJt$~kTmC0o;AUzuuCT~|*^Tu+8HE&N|QWZnAQo4QfJoxsoiXGVJ;^bn5kHYYY z5F?dUv;!kyP7h(lz7pJbXhNK0Dy!IpL=ZbZ&gAlv6bj??mGsA7aJV3M#ZD&w2`46# zkBEwyv)r3tj`F7oAM@9G#W_he`byARG{Gv4V7^+DSiiz54ykl!5jKxQ8iy_QT&3>$ zaS7200q8)uqRfll`ktB8mj*{Py2hv(^3i(80tsY$R3&oZ3xb8vV^fwHNrGK!&DJzy2( z^~qbCIv6FESmE+5FAkTmyOtPa$>%H-R&G6zG7XR8YI znT|S{h)yOGSp^Ayu*HEqWkksWf<$R4Og^FjA10DWVa-RdnNMIde_)C$-2XF5z3nY= zkNXc1x#O(fDfWfGmx!nM_=IVKQk~&lA^F@V0(YxS_JK4g#~wkus?{ll$$JzgzXwy0 ztf*$TFvpS&pv@H4ya&y{hvwUere3lE--ZsTtdK^SVE)|}{*Yk)&iHeOO;a;B zkiosreSj@#`c%-;m+u_{ok8Nuc=dI}v~ee0HkmPSWjIXQ>mdBpC)j(KBL`}=MZ^pO znoPOcMJvjFBnP3u3bT1dfN^{X89=b zpJMxMJQ5*A@2qxTX#0W-S%Ym15B54(@Itgie_wkzdy?O|oDxZ66?fFUj zNt;tM8?9WKKKIs|F0Ma{MeB7p*1CvW)aPFr_K6vq8MX3fdEJdQU7CAm?fF6&h6^>uyVTF@c zdRXC2%RQ{{mU<5>{3F<)WNVb2B}vRND8ZbAtxJhDx8a-_4|d5UJ97*YyO3c|SZNcH zc0Jsp-E2!R$F)!lsHm{vQ^PX^4HcQBmVn)pVE#Q!-p}0|*;1I8^N2zYr`VDs7-cZ_ zg%4^k$l=PxTs<+|>Y6G=H=CL(_tvc%cdEa3U-pl0oPanl3I}N4l zVm4~WyaJJJZ-O~l|G{D`G%81FuGN1BcVIj>K(tXp1Jq7y)Bercw6lNF=CD+o1$}Ko zq2df}=6|y`^Z!+wm!;Y)>T46K8fR!z{$_2;U)LtMyc{9QU10jVcd^JX1%nZmOtDUz zmbHP8+=xlX96K`bk(zW?0b~RgA$^nnZRYrT_`5LYBPiEbPdN`p9oX}W6U>o?AVuM; zA!0kqMjg6`u~98B5p3zQvr&f-W~e#A9Fws4v)HJ^NZ*3=El59%^o|5`jK^A&a z_SHb36M}se44A{(aHwDq8@1)0Apl@DlTUVKfoH*-4*(1U^oaxpu5USWA2G}dP`X3{ z`C*_mzybnuUQfMEL1Loaxc6#F(kD{QfNt^j1assKQ$a*HhUBVgkeH3}ItZP0%oOnW z1a0lb#|H`K`~_xtM1nbgW)pK&A}R*3+yL=-TUd2@nf!TzRUAvOiXOb2WT$bA#@Jxd z;HOhw1T3HwK@3#v6%1Yf7oh195X2M+1owT5(;ILVDNH6@9yC5G2lG&H`c;>U$r}=^ z;*(TvSz+>F;G&TCQtr*k++NpZ2}lR7^udb>%$J~2O{--1c(FVyU0#(zS5-uGc+rJB zT4<%>MvD0C@TZ0%GfC>=5aI_%z*Ul9j?qXc0WaLa?f9&5UBgBI=05=s^#&aBh0sHk zdq|kDmpWhRb&Ups{w_Y60d}y>X|(%@cO~elHe4>aWK`_-EG8%V>QGqaTlmbmm3Q4=Jv307I=awS;hOjkjI zRnB(d=q0Y`$9RY*h>3?)RdF!E{5uoO{{|b?qp^umASA(JKwXcl(#)w#Vw=Jrn|wRvcl>0NcpzP3TL~BNc(v%Em4&fUI~W10)%_@D}_cn=@gSAtb@MDQ@;;Ia^-BY9MAB&HPTT>pN&d^5rPaXiEl%>O4mRx6*A;q*=s9MP#>0m1iA@6=&}9de91B7h?x)r%i3fK=M+zD{-ZL8?2!D&A!B zXH5R`8+D2%D6La;^Yw=mI@KjQ^;xP@8(3PW(q0QG?6j>+exEQzaQiDhPOyr1xY^1= ze?)9G8O~9`>~*M2zS0FB*n*06ekZ}4ATyjd+Ch97pu1W@cdY^4wGwpKa?oA%n!Z0> zK?M3Ciw=P1r2Rr>6nu@Rc)M3`^XPl~HjB#S4wcDos!V=|2anmNQI&Ad`d9KEHLK^fU`Q7yg{(2N^p*I0}LDp!u-4Ou}$bWY+y22hb7M;%Zmx- z|CG3a_}C-v_mVYq??6y@1esn%8t9xJT09jcU~KtGO9Et7!eU9WiV{@JsVe%|2JV{N zo?sPzY?hLpNT$9(j*;vY@bN3*|Ioc>uBJhBeQj<^(jU`CHYJ$Di5tl30hSM|xZyy8 zRVWyzW}q_2dQ&yFR=2ZJSN-Mc71BJgil)7Tk2mqr0W%gzm{nG&Vzvusx{7>Zhc8@e z_k~MwKFxL&s0bwL&}beuLp0-Ij_Edh&H{_dF(+4xC?`}_c#Vrkt{ui>MkY6-NSP0U z%`tzdH!?H?4m%JGOwi9U85JKed8bN1cHDIU2*Eyl07HUKNJW!iwpAWZ5WmiP2^Juj zN`COe{5`b6Jn z*x(CVJtZ;xdy~oLp5{Rg`qN8HEX__(LDF~-#ndY5N zxVyh3wCx&~&%KQWw_$B!rP8V{p;bLSSA(ieYWMj@Le%bFA0 z(O?e5F8zw(p*;+5lQ>0iEMV39q2GXO7{&a(7z1_3IsMczlGp-L87KAHNgZ>}8LHs~ zLF^J0p>lC{(-xLzx{6dLgH0}rJr6qo3u*Pbrjul+RE5BxgfCi;Lz>ib9p#gSaUUWI zb3L2?F{QLw!gYb@6f5WH8wb=VMLL>Khvv%msJk++}S{}L9p0syM zk{Sx}lenD#rm%`qaCkJjp`~&4HU~}bW8nHHPR-Cpwt(1mqmfU;A>y21*W3xV1e{W$x}XYL0(#=kY+)J#mM3B_3rv^@3+vB{2N9gF zO4VfNFk-=DQWMupxCr9#zZ5Tm>t7KMg5o^{kK59NJ-oVjxnu=;IC#rf1$walN^Y_O zZZ0}N!H@LpYoE4OzX+k2inmFYEI;6>D4W0fJ{gp(z?T)-VAmb6Qhqq6Uu1)ufBC6d zY-;clvKbCduU>M{R3j5Jeej&J83B;=-Ns9`Fu`pPMFT%W_>)rO130Yd%?QkdPUm-^ ztD607(cq<4gD_mY^k-=B5AdF38U7wAh2?o)&~);k@UyW9xU&xdciN4$K5EK%&`H+5 zWzewwypE<^1kriX1$t87LXk9?rz4dr6-Z&POAQRN*k+#bOm(-S>VlgJQ!HRsFS*(ybA4VZ)EJPIg-@n6fVlWk+IP%34Xv!#?-jfz$COs`$GR* zI2U4TI|p$#?l2w(&&|T7W@|fhQ%^%uPiLi`7(IDH2RZWuTyuEvWX9Y}ttnPsw!zJ_ zW$}LfZGG0(Jmj@+nsRW3N75=K4(qKE1=}Y@x6gGvQZM z^+sS>MqPjvc!6T>3Pl6C6gmDRdvGFAB(M2$gvfx;S+RjGxjJnF z-FvO*l5!R{5F(+{y4S_JM?_R1Mp{C=ARMdbNyMhX0VATIrp(0zzlP!qky9Fkn^7XA zHY4z#qLIt$;ijS{FhoQUB9k`?IAok%57%5gJmBIS81{|DXZ0S8yZ0d~i^Pd`@llXr(|vj;E3CopIP4vBm&}%ig^u9Zf6jYMQXl0+!+ixI-F$LTU_S!g`*u+O}2Az!^P{7&5cCX$Bd+z^Q2d@PpwCr`nhVC$a zwiq+s!B+PgmC485#_vOj)~dRSJjHEn^$xari>mh;U9GUp>@a?PgE(9eTo71kkvHOX zm58p8uY}nyxr#jyaFrk=OMx*XAHJHZ?`HBA%O&rBuERkzL57P3ZDccr20?lBpQ4mt z6yA}WX;fZ!JB`H4CbkMC)Oy4%Ypusyzx9pQW4eD29y~CI79rQOOCC?r0j0$U zy@X-thxwSF%WNr3aNtF<@|DMF4SI?#ui>FKwsbWVoPxGZeOU6b(};;jtkQ<$<8I@N2gNEa(W4^zwOFcj z@EbpB7K`%?OHo(*m~+SG{O=8Gr>`A4jDjrO`1$Sm?cq3pIo?w(MEO;Ov%(D z<4hQNf5n(j{@)n$u;iFe{JUfJx+lvl0s)Pdn&0jCrMLgz7-|8AnnRAATK}!t)gt3E zzGh}K|8ES}m7H1IzdN&9FzV3Em=Z9iocVrD|pu@F9 zaQ&P<5fX%QX@CD)=YQ52&;N7&z4QM+Q|G_m({}-Q=>j;BDK3CpUP@j7ABgA}xByQy8JkBPPxkKM= ztPxLab(F_C3;5vO0P<+#_sQ42#$(CH-NwEeaX;|W?}rlO!l+mQ&0O3M2#f)QZZy!i z5>N5IWuD^g{p53#BDU{{3t~}*gkK}YcAJ|aN!LegPjXyr?Fws%MslUTi-Vux;_!as zi=#AoD}3d}k<1{j4H)!$GNVdntF|Mq1m7D_4X*?n;vk>3;IWMAfv~%ehjGPS-92wK zO#205t3@=^H!|jBFGOM8&)EyDe9f<2+OP1>n-$YO@AQsr)V3Mkti~>m07BK-p5kbi zq6Lo)sJ1I>5RR{_7!|Gs?Tz|0GE;`I*s5={wLf^)HvakhUcFI+ctLo_rOWI>z)wKz zU)*LwqHAMIW_NWb$C;fseeKM+$oXr&Fw0 zucgBG%hX$%;AM-4UnJ%ySgv4qfS&`pJH_)jmj&Okcr>|ppQU?7gX=Mn1=|Skoa*52 zJ@c~pwk|~3-NW@-J9i($i*CF)1_aXWlUd|RBC1{$V}N5utUiRzA@^ZEy+wmhsm;a( zi{Rm~!$@Qv0glh=NF7t}FvjJ=f8iGLz}w2<#qf}^VD&*$Zw*BQKlZ`L_#2wup_n`A z&E<&1BRZBXoRJ4j`rX}?Oa(=q{8=Na2WY|hbELou z9@-w@Jn~>K*}Z3bh7+ITonc~0ftUEsjo>AY7}&>4>_qCRyu=F%v1}~bS9mX`zR!T` zL%kAI>ui^wh-)00vv_cQiADS3?Tp#D>W2G8|hZ+nrdC`5-p{>k9U(zhxH){k7A+DNt z%zw;bA#jA&L7^7g3A#bpPVo1N?F3D3Rw$Mg2z>};Rq|S{vO>hEV})g|67QJ%Ww!M1 zHepaYWObGBPnfs1eK{zvv3s9?oG38*hJNGsr#&Vu^Xiide0mFfu(k{GA51I?oD_Q= zKFftW)ITF0*HJ!ZZUI|*iH$C6;h#_oE+_??n1y(jBpC5=$tvrZ8Z`d|fN@xSC zL$pyCH^-rm&&T4Bua^0kanq~6!^e!9RXvO^x^IqTBGfSj8;z7_7~ipdZpIJdBpxd< zNvggWAOuUS`T`!jZx*W_N`($dQuUy9n8bJ#nL}+@w~MTG`=|41-Clw(i&1(>Dc0@8 zv~??=PXTU;8IWS(&A5b)yG83U%c%_vpDTJ0`t*=!1O^I0hSTP1 zekl-{;Fp=zey-~@To8#DS>A%a>UL$$+=p00qqunqNpX?h8;pxCLMwLovL3U;!uD}P4N+fb@1_&!ReS4@afI_Ud#rGHib67*kF z_6(qZ0lf6v?&|Jy)Srap>6yXKy!uR8^V0`I13^}HrmUwq@TaUF%mE7BH}%85ZqB(L z6dwPZdE}ahxO;8^TeANPIQZR(X7i(jLEVPur^XVRRH2zIUibYnTXO#w7K=3%!3INJ46I{hU4&+zap2M^E5p8_vjf@d{n zH!Gaq>M1@-zGpw-`W|TNK|PPJ6l_$FMY611`8c_H&HhERI7%P3UJO}!9%8oQ1Z}oX z&>ENAcY;2!vhM^Pnb~)Ot_ROE$?x)%f^m*}{&M5aUz}muPoJRp?YL23#1jIW$+%}8 zow`*qWAJ}_2jKAe@i#eqV(FXle{}}{PcdfPc?M9Nc?XO>Q`R%@fFWnfdOCo4u(q_I z+KvUg?+$E))7STS@`|(zSw^p;_3g#;t5?(dF44?puY0b{mc0GtSF(T$H2rp2)8`iT z87W!JU}6M!q~SjSmxF{p-bi-OIdr9E%_7HyCw{hEG6w8~=kcqizh{~}GFD@fw1}6H za5gf0FkT`a=A0rPok$g|ACs;?Etdhnk=4P=xkAFt|+ug z6skp``mZkZ_WP(04jc7=YxEii7_|KaE()nQb3KC;m~)h7i8PpP4y7K-eF(>?nQhhY zB)KA|_%|H#r&IhJvMFtBRO{VYS45i<>}GiU&5l2VJfpJrJoC78ch)MisfYQqE2lmt z(WRWM*!ly$=^&?+khc^}Q6|F;SqXfA!X9AwQ_nmO9hHmyQ{nu3kES2uFy`7;YzqEG z@pf+{7bsqmpAoTLs=3D%2v#YN*nX(F$H{^{tm$o<-pqFxF8J&N!EDRN#iQvDlEohB zFwouEL~&ifiq)adoNw!&ExFcD&1UbPExCKrvT6D+Q@8tfsp?!N??f@)M>>oA@CBnV z=g^?CuqHoO3Jg+$Ya!^B0*a^tcL<} z;)g|1q)dZ+vfr!XC|=Txr0I{qdv6IRC@f6PTDtxS;8UMU5r2K@unzmWbm1EJE6Nj= zaxNSJ+-u zp^%WW7q)8bgG8i=QG1Q_bLnC zKmL&5ePC!hyc^Cs9o|2^iQv6s2;l7))JOjAxx7ETNtI^U`2yaq2?TF2ebeCm%$eZ* z@c$g%Hxj(PfcHdA-z7jTK)j2y7j_uFyZ)OXe&Jt(xZj`U4>j+L^C%pE(6@>VDgViG z$%wv#Yih`%$&X9Mi{d#n`Eksa9Dn8=;Z{}nzw~EfYvG{P;Mek6(naI2oP!ri|2W#q zC3d9eBAv9QC^HXuk{8aRxA2K^mpWm-6FXl6uU+BleJ1Q21 zDC8Fkns^}`lv2}vG6i;GtN?}d~3mMA9WHrkwuC*tNP+xCA2OTB3D3hBib83I{mYB;ee;^4qEhE94 znF%&cvys-Y^IBViO+#(YarOk8b^})FjeS*!`K#;)|H@P5ukw`nt2}M~zG3+$_?w3A z3|fVjKmpn8HnW?fT;DTqfboN$k;9q`s`9bdC)wb9hK=eV)7_h6^9C4sBE#|9LWhTHN<4WoeKhEkZkNx9Ip=~J%S^soB6SX6bp)!6C% zy-j4e_N)6lUgVI^&>Q<{y+MD{U8e>Q%;I|X?&_4Bt<>j^Y5HzWk7;b;9!)<6SEM7G zxE|-h-t4&!9vPqgI@oR8-NMH3w|>Dx`!vSi=Frsf>Kheu9m|Qb z0Y|LB&{o2q#EY)obT7R~G`Z$Js_7kGy;EZokMfZnJa}xtTqloQH$Zs}&1voqFB^9l z=+_B|d$N@Hk7VuB3rlV7&bon4Pbm%Qby7$pcwKS#C+) z_UZx6YHm?R*S8lQ&!~3t;4udaB6Ol!KRdUmYw((Zk|bT)Sg+<5QGm~5j+$moe~0TQ zSpz98RtLJx64tN_3XDGwAbwlG^#kQK;d(cRH7v-`^tXBJ<19Y7mo-c<`yNmBJ$~8u zc%tv|i@wL>)?+_?t9HN=8W)?5?zwPe-(=^(FY@pHkO!OXn%TiZ_mO^_SBQr%*nJ*u z#93();ai%FJ<}~m6eZ<1O`f7m=8@U1ZGAe(&2z04;TfSJlFnXes6{+m#58L9Vcz0F zG)bw&1NM@{TReXhKYxcWW8Owkj^z*Yh;NHAro}XawGT*vn}NKQGda5@XN9DD9w$Yq zu;(Ej@i12CdA)}@JP(sWbcw}W_52RP387l-c>%3Mm4`<>uaj~hR#VqsOtb4ICTHLM z|FF`kS4~s*`~@BQoj2lRVb4RlXSL`WUcLb5Ee}H(tpvl=^p3FSabqjRMe>b+K<=40 z&x1#Lp>lcav|Ey5c*vsjN#z^#_pIRB{3}Tt)*v;&V^Hu;%1EBD5n;YIOW=$$k7OVH zF?h{y59+7jeQ)KbCNZpiQ0LyI>KhRDWdHTVI2dfr{nT5hHu3ONLWG2QUp!rNF)NhS=aEM$@;@ z%LhIJa!R4TM)63Vfu8HFMytqs!#j}Fw}+yX_n(&@G+!Di@{gJsD zJou%pn)68Bt6AWsZ!ug{b*r&NB^}<&!!MHZwYKOaXwvd^sYFD6*wd*c-;0nb4b#f z0S>#w)Lx$+Pw`%rS0zL-(R*O0Gl;G2b}Fyh9VI9e7!rJ0FdA%1up{F&VF{3(Q@&i% z-!$59?=~Zo=Y#iF`ipK;aO5W7=_VO3-Sk+1$D&_!o80|rbtTs)6>xpL9GUzj55}@6 zviBkr3$wa_yEk$+ZX*vyv&d=@9{R^MvKLxo?`7%Rx_2SDzUhoysSG#^wLG1m^ zt{i=QL1btN+Fx~Nw@GYbu9Z^u|KQuJNM5AWC{NtnG zCCFfIsXiQE3>oHjBk#^`)9N|b+XJJiR>Qob+gvM2CN zB(tk{Z9cA(mh^IK)5|@dUhe5TlJI!!4)mRb1$ye`B5+>Kj_Sh*MuYW(bNa+qI;XMF z`rVMpCF#}Q!u7c5z-aOWpZ(nI)Dm0`%!_DEP?adb znP2K1qsVOOPjkqZlS2#Np09=H7Wl$53}5*6PG9(bxNe%;3Z2&aWsghnjJ%@d`OGKj;o_BvPBi{FDBM;%anFVObT;Jve{<4L5p+>=7P_@E! z!Ri`_liP~*9I+HWNRc>P=JF@_fAPUlyoV2OdXHD3qipFtkSoHzZ7OL>)woK$kvi8< zk_SF6n4YUil%yZm^l|w-_E9E}eVolBxnwNN^$jq5zAlpcEpJv-)5qC)tTU63j8Qy6 z(#RYqr(UV9`OCzGb5->(l;C};RDCY|=Ua^7<|;O->b1ISxssNm}Yj583HvHKdsuI!rQcw^>J%EXyvZtSqez(Cj#f0bapN zrj?1FtVN(8q@k(%`+VND_sj+@JKx{)e4ihGF#Gmi*1PWSdM`V?G46~F9(hPz!AZ^A z#hp>*k+a$wB0tdp5GWi75x^A)+_eso6QW{?MAQwzhKq%QTJRCIQZvycN52TUB#4jm zsma$u&8-Nkkx6FT7o_8x9ot=(+d=wg!vX#B; ztBYW1>sjCRtZy|6ff(L-CVy0vh&3}`MI=)*ZE{kzJi0tjzP&n69u42qoLaeZ$01zQ zv5dXbx3P?U!d4jgX`>Y-&wY^w=?bQtX6h=U!2141KK#C>C}wG9A|6 z^5`IcptL*Xd!oH+LbQnCds{QVz1{O$6U2)Pc>ng#Z8|^#w}}@_eKJ!ZOT4WPqyIvd zv2R9yiiN+{ehK+<920Q`+F0M#RyiRCY#b~hHkkTMf(|{r8N>2^vT-!}*A-}RsZ3o! zeLfp`wl^>=Rgu((7XCLJ#X%I-G!gj&(d$va1OO|uRZ)`E;9^QS3(TdOhqJ4kyI=$O zYLyekMSbTpltzqs)VTx?Jb-7)S43oA3y93sEwQr5YB$G2NnJCl<+<#bj*aMtAVByOWV)Veq(9-^-X(lVw1+o8)BKVRW8}dKb{!g!~dIJHQ^Pu^?V`j)qCuh zt;6cjwEvb%?u=l{*5JX&&KKd|of`c=!zU2Lm?(6FZ)k*v^p{k_E)z!yz73fa0&?8# z?Lt6eUbNAskQ6hN<5tM}F`Gjid?@QZ$_aPIaV-3gVBvq9DNm)iGtTH%jc(-(QQBPsS_x3b@@G$_YcDXGVC4 zFuchB8iGe&FSk++pc*D;)c^`|*TX zdaX^ZlbD*+iS_-OS(5*gT8D^YaXlPzNd(0LlUHnH7R2Lb4>tO5PYfG5^t>VH~!nM+)X4eH=dlXkS^jEcb7R1#`kLs#r z>d2LDWlO+S#$!%m3dnB82=;A7H_7lZZ0BEi4{h9qJydrVm}H}E5;|MjVPU%}JoTC| zodzbyvcS{?#ALz_=N;c7DHO{LyByW0n?xlIq*U2@STpQYk_Qc>gxDKNe+%mmSg!Dh-V z?8i*|>j31bL^uMH;)rqtGNYI>s~BtfKxP6{9I0s=-GR*RZp9Jn4lqQPjGFCM9Nn?k zLBJwZV;r8O$fGyXTRdi|#`|80fIjS;aG4Z#9VD13RaR->q(ce9SFe0d7R0v}Z3RO_9hcww)$J8j7rfFKJtoTE` z5RYp8s)=Te7W#>AXj&}s7eAuY>~AHqwnB^>7GUX6Wb!W#Ylf*)N;_=k{Hr_G8EUfF zdqO&j{~`Zs^bKd{U!5uax%{gopndNAt7?3F(_*PUX`MKa&m4It{7;y=+}^fM)5>BU zlEk}(SkE4#v+iFySdv28@j5z!s5fiJD~^x^x8O${3Rw4~VBW2Svj~jl#WrD#>xh=E zY;hRA0`TdmN{4P-F8l^chrlX3bKrNaU2?!cewDo~Qy9uOXTm*KgROjBCT!-{+G{h( z?QGD3n~^;CxKqBW&>qaB=w@^6EAi4PC&a&$@{(b%HQ~;v)i_P!cT}T()uq=-l2E`g zrIv5KJoJ#ikbGF9=-C)+HmpA$QlJHfrh0oYHTefp;F&P+GnX9J&FhteRm&t8C^s+|#VN(vExjKanEOdkwo3_~W&= zZk=czzZ1uW$L~i>)~!*INJTX&*pe;xsgy^3>rt&Yfip8xly1U?;(Sls^9`rlarW== zO`2jsrfY>l^g3JQ1Rq8jDo74fhNhyqab(l<)pM5biY7&M3UG>NW)G~k#~6!0MJB@O5OnbX@N zG;UWp?F_?^{(TW}&kub$f-uq;WMG^RCDM2zokDVekb1+3$9hrYVv!h}*tYSvPBm)2 z>2_yie!mtu;obs|YK?7#RI`^-{%|428K)q|kxO+vy5@LJ&%=Oal9ynMJgRj|!&$J7 zbHWaT0h78AT%nc3jYE@3{_L-?g4@hbiz)If>u)QjBj4xM!r|xX6z@=``os!6zW!>; zfPU*W7{7GxMc-fdTVptVboNpYIdy6O0v3PJ8y~W%y`OyUHgkDvE5&hm60F>}yOj)G zl|B5gTUt%j+w!e$t*YVHFb7iv2OF+Fi-SSu;NWY)fm^Hc2fbY!z8P_n?B7Mcznl51 zQB4{&0~mU6NRFY10`_8TaU#z;MjOOe!$^cV7=sq(U<_hpx&|!(hAXD17(}s%>$--< zXAHJTvmQE)r1^+paqZtR^#Yc0d-{x6WPkK+U=?AfmxLZKV~cZDrQ>sYN6vIAEdg?)q^ZDg%HgrZ-|h9`sbK46;BQs?sUTE}usDL6*F$h!>${m{oOnD+In(zyY?HqqjL*JyDs>LunTY(0{o2eyO!>_r zmux_addoK+%g?Rv*Z+b=^hUon6S=BSDOJbIBfM5$o!nq4N8GsbA`8wNGd4~C!DIQk z9uppr&l=pMc_uUivs`#NF(DT<F~+nMk>C6tN1HJQ+tHk9I1@oqbz<)9tAd*%Qv> z_j37<&%E2MXuxzc*wiYDhSH(V;RZ+AalGzF=LKhcKSkun;j@InO`20KsU!CNnwiB) zV$q%P>-25Vp0aF96OoerYp~NgUKt_u23v1IbDwTccfxd+`M%J5_>2^ZFShu5S~ z51)9ISfS+5042KkcfX>GtF_R2sU9fes@%%g+CsgL%cNBFWXwpB=MEvI?pA*HEm-ny z<+tCWA5cQUhsK7U(pVxKX_w)C)&{gr)45QE!}p`bp=~1>&l##|TK!FAY_XMFfOSH( z$5Id6#|DAMy*7Gsf?AMUUa_B9?y+aOE&J-@3F=;(TZ8>f`}g(DCXE34OLq#TeV1cY zStdG5{bxpJ>3v72vtXg8cNX&JZ5CmLC}5nfsW@t-Zqnz+a5s6UH@e9PLr>4CK9zX3B1N-|f!y zs7QF!oxmxQw+qvPP{(IfP5-f|i(C@zv1}|F8bLa6%TZ58&Ggc|DhmQ&Jd%QkZr^{X zA$V_ftIz6W%4erT0w1_h!SKs?ukCI0P5&BSUL&OMcwilNZqMkFxUE>d<@yW=?Q_ax`fB7#h$G74~Uyi$Jj`*Q{o=8~ZfwT!VqShQFF2qK+XDoUbj#JJGTF7zQ@g zr$;G#P%z@u8Np;#*cFQlvIv7?`t6dK$HLQ8Rb!)u0W1L&dY%S{HT+<(6&CHA5;3~g z@FxaR|HcAq67DC2?vdx+~(VOn3A7JEps0UTnHs%AXqmXDyF?8sVwV^PRBCbD}PkB)PQQ z{htdXA|jwbbIWg4%D%%WjBiGPB|kmSSD#SUq)AeqzdFAUO5iY|UB=T)cPsf71BBRJ zW%%;1(Nsl!bg4U5C*rtG_lND891d;QRV$Y2mn32-uWlxYnI?#rB43v3tw@1hIs%n+ z(k9P&KLNMvg`k!s0NcrgCkBWmRmrBEb*#T@>62k@{$j#?nF;qa;C>I|hT&?Hg<(nD5n<}4P?*<0 zE@OrWI>=&&y{sRy24FGev`=PLSt1-{_(e)u5KUs5%^^E019MLwE^<2r<@VJst#f;gEi zKN!i^UXL+uR60}R7DC^~U|+n=JCRp>ihZEo1|Bux-<=RZ!rW0dF;Zd#6?W49i z0YAz%-sPu88m=e&Du(U8pVP2yiG%7U$oxBIK4Z==B9|bW98=vCiR1JieXs{-1Ap{EttTTZeY%QZAzyuRSi`^@DVI9!({M$C#9}3p`322;`!{dzkNp#e1tq3F^A68XnuCp=C~SD_eLYK#Xc% zVygE27lf<5+nHji{-w^CHiBf$UBkWCHEHgQO79Io@~#=l^Cl#VO-NomT`bk#-kEw# zvNic7scH@eUA<4wheCzSEdD@W%jTOr!g^_bFNs^Sgv%QxjNzAfIJK#~K zq`0+ha?zWl4Wn~Ori@GRD8u3L?e6At5%NZy`ui6zKm!k+fIIHDpSLuOb<&4H@LH*JLER^tl1 z7ZXIZ9hO3(We*`3IWcM$6W=m5X%;gP5g=9*h#(^;M$Ha^#Ld7}&DuHlU{ zTj2kh#(e8CVQHRk^N=xe^3y%g?`yJ^^6b8qZmpU>-ig!}ozOx9{~(RnZcIpvpF6D8 z|JRDncz=pp+aecDq;LZwUQ4+BZgBVg?vLAV@cwXUHH3s=)P6OlZKUQ4KgIcS$wgv5 zW92_b@v($qjQlVj@vAfRE4!M?P((NV<3)f%i+*Cdkt)&dS{yLcf#^H|9G45kMMYV z5Qh+H8$JDp+vIsygyU_^sm~DGwg7 zl=H~W<)KlPTC&L>zcS>HUnG}q$}6w85?nct3?8sFWaX9Dclp0ZG*~Gw=TX4}k)6xk z+Sxo9&i-Z|N;ds5Im7ec1fzE*j6$A_;Wpu)uh;zj(@^tr;SzLuV<58Y15pe1PUeBA zJ_@xj7e0y=4+bL!tDC=*O|L$ILStpbcl`77XXXSPFxArhd0_;t4?X>}Z1TJcoUw@c zST5ZhIVbS9%wJ)xm826l9GE`ss8CBU{jQTg4m_&_l&I%0jobGGmy*f0dIwi!$ z0cCT@1R-cSF>W?AzeYC;GBs(oCnL)y&vk}7$cd@HGvpUxyJnX3GvXjb4Edi>0Fo{I zZ_9+HWytX(m^mi${CCKc{j%LS3VL2wCPwWLi^@zWMAAhNz+%*-n!IuQV#%=@xUne2 z8dGj6HWVaC0XCc@%;V1<<7p7!Wq7myGbRYr+7ddBPReAfnrlsjL zoqgz!oKfMWY0?pWN8(Yf(so*3@2#bsh_OZCPkkd6&)a_%{Js1UEuQa24T+VnN40JM zkea*%Kl<8yp9O34{`ztja(nmiIpo&!n?|j{8(KqOY+C-lVhJ<4^JuZua7E~|Skq@- z(`U}Z#bBqOVCMo+6mS%-sQ31ov}330MWHr)NQJ^QHUHJbBxy`il5`+BNowwzB<<^- zB;9;*k|bHJ5mu`;(klKe`frr+3!S8H5AkIUiQ~yjDG1G@mljKWwuBs<2uB5QOeagC`qJp9@(Y5 zg6=8hTRD%yyS|x?2Cj*9^5j z8_-Uz&wQ&%8SYk&k~8Ms{1{R|Gz>D1=#)(!)p{%T%^eiu|M}i@0P2BaypkE`k7jlE z@g=`&zoE<$t1jpN*LW%CiHBld)txgQ%kRWnQR5xGi>3Niuj=+Cci!a~QMNQul6d*6 zhCqK!4++$k*uks>0YTxUW40}MbSt$+2|v0rdwMiFXHrzVlM?MR-L?dW^c3@P8-K8? zuq~-T?8m@z`yOaA18eQY(1He*+vg|3nsI~fd$}3P;39gp)?NUvAAGh+6W)K6*}>Vr zZ@%4?cDxL3S&nsZhjRA+6q+nR!b&L5DZAPlhCAibHlaf3e=B=3&an>eGkMOybo(?t zY}#YKCKzO3YCVS4o?Lo5&lz~gK8zkuG2| zlUH!&`?5Ejv8#mH{li@(iIpF=;vPXm#r>hkJcmz9V6w9uC~^!-W5q{3Szd7(_;QU% zul}H1^czZ<@#V~a`r0C8KQc1HPy_q$7C9j~Cg~;o#`jKoNlM$nkVgi81ugR3>+|I6 z${&w!k?$$T)e{z`Y^QikfX7Z9-!wc*49Wh^ng(;_`Z$=#m zLj0Q-!M5l8#PB_{tWVp4k5P0O$(@TsW`SdmaA!rHi5foT6)bTnCx-tiG%dr{!TQxE zYMFWX(Wi}fPA|k69+@(U>2~Sqh3%}3q2uHK-Px!)`#%!ry#&$6;IirudK2bj=2i;y zd$`7J<~@Emf`gB5I*TZwlc6TRYOQ^IB3U^V+H**sPa!_5o$^(4?U~}u0(&YN@ZzP1 zHS$#}zgyUJ#;?2^{%oZ+@+b|aE_j)I^@T4<+D5t1Zj~foeT-aq3VMk8Sh)}rny)_A z+sSt#R`!pF4}$OM6v?d|m*-_ilTBW~J{KDHRl*+Bh?dvRo~V34c)6DZG|JPInxyX; zrq!VJxhnjFNPKTtgN6#A zRq0{rNI!~oi^JJ37&M z?TSvAmgZ6nSksZMeUE8o5^sg8fnlB_7mi1hMo?sgy-UI#;5Ix7H3sC)qIk2O->Ls} zY~P@_lM69$dz3pWeRsRHO&)p0SJ{@Y^!oo5VVK~^WZ}G@iW3i4I&Vb0gK|2c~vs8D)q5bgG@kId^*ji9OJ2dsHrsvSjtJCj#lAL}Uk zn-O*}TaBCL$rxjk=gPEc7;0mdAj|l2Mm$rtx)JZA`j6^$S`5|e*D>d;SI_SA)@u=# zqDH+AM7=(VC!u- zZ}pCY5bh|Ah7w;ehP~`N7=!t*yv>3ZD2A1@o8PeTu<~0J$v4+}PWf)#c^>(C<3qA7 zCl#C5o{3E&W;u*=v9iBOk|f_P33B0&w5q!^g{g55BY6Pxt&im2{tFvWiel}@MgjK3 zzZTQZQQsP0UlE?1I~`w$ZC=TG@d%r`$m5u=59{-Fid)%&og>ZBgSRwl{b$B`uQE;1 zy@UeGu(vtKeEq<8G+)P%4`FpSyik!ljhBCmh`C#_PRPXqgWSSA#fLR=EAuE#MyUM; zD{QoK)}&B*H}l+Un>1wv%p5jz&$X~F7y%oH&3y2+O<@b=gV#1`4!M*fmhJ|`0&r~+^6W7qklsi$`%zqZQWblsosO@jJT+^iaG9qO^JbFb1&8b9s zNROS-E{KwTVCAZCKKMn{4bCq0ARM7}(~@#pH(iS#ecklPFQ|tEYgkP&>6de?n?Bft z-MrJD*?)4J*Ji4iBz?X(YyGtM8>){fq;@FO3s&n^&Y&he{fDNzm1-sr8J6zJI4Y|m zg5OYtm2t+T=TX3_KegnDWCm2~{{S^4A_SK5zko$n4zZvEM7gy}=BvuBPs7|X;Y&|O z^NgPEzLiG%tit)4#MC>Ym{y&CRE_!&_q6Za%qGeVOl! zCI5;w$RL0wu%~a6wgyQAaI?8D;&EJp%V1x?j z7i2IiR;4Loy$XX_v4Bkx%Ty?YXy2uXEg5;Ukg1Q@vcU!y`!Vd2v1f!)SnWL8C1Z2x zxM!>g^VQLxCG*Zvj!|U=Hc8?Rd`@vort}HzKXYub)0=z)2?f~}%|=u)>!_6`;78wg zMzx`pLWm{{y*WuoGzz=2nLpI^FtSi|G@?2bL#9RkV169$@hYimCSeH_SZ<#L-umr1 zqNQy_0#Z~Dzw+&VlGt$MkD^?>>gyQH_$^EONw7dn_o(r=99<~ETa^suq5iu2Kg8{Q z|AD%18x4gu7|O`G(OV^yV6VQ?s?{GN>rA*w2i~?%w!t3#UEp{4Hfm`*R@a}VEpe68 zo`QHKD7sBc?!z&3jqzQRQYq_B(N&+ zd)^3v-lbIYcmaB02T)4wiyHN)*2@HYeZPQ9XjouFD;udXkAcWxU$(eatA88I8aPzY zIKIk06?ON((ta5JGMUos-zfXL;~T7Tv8nc@N6P+a43)mAofBmLZ#bza&5X_SaZ8@B zEkd4CPfzZO&Q@wD5XUH+Q!c$V3f40ykOvtzOYbmjP`2@g*ZWEJaKZ3>PAOHfCfLTm zdc7abd>_6JZma5BG1vuG*~iKLCGV3WCIE{+(3s6GDd^9_Cv|$~&e!n&Q31qsCiKEri0g z_!L^VN4I4bPRt3Lv3PmjFk{UjGuGYOqOcWfr6*%biafWJRxU!QsEw@GL~Znb4c%DO z0#m9Q#v{&D9KN{XHPL4HL$8K=&O?Vg^qe_ssOQXIgPwz+)8+>HW`$^=YnF%xx_%M- zBSf2o+MW8fBE}c8sJ4kwb8&!1O$>>SapT$rM>OIiA`E$kpzRq#8esR3Vu=?_!Lq8? zdnYwbVIx=|H?=AgsvJpPQ{TyVG*VajZhV%ak6$PdWC;YZKrnd9;Xj0YUO=|3rec5P zAky0$#S*uk2Xdr<+$|t`3z`c6x%tUIrg^b|d{sc+-I-{P2ILFpfjr=+ay};@Hw$iU zfE;xm$ae+gQ~`NNK>nCnEb(4p$aX^211M2Mh?B`CtmdHTP2p%IKa|PsM^b>z8AZMJ1=GIx^<1QP< zR=Kns6QDdsH|h_cFMZ-OmZQ9PXgT^n_y_-ZOw3qj$BVHWOxx{0IA3}Rw9oAy{Qu^B ziEJ&-8L!{hn8MWf)1NJt_~hAi;`lKd*hF#t9wn{Vm$-fb*VW>> z7p~We>n}2jCB9NzTce64{%YU}I%MV7nmGu<{%rJNP!6>(Hz3eXkIV#(-!+4i1uc&qT zH|AgWJMY}S^@H8zKS#UE4_eGH9qHuFZyAszJu)CkdUHUM^q&Dq(l-N=Bs`P!188dm zolP6((#But_3!-AxwY|!-BB#eHAOxZ%HQz~Q%>*-Cq>53zkv3>l%g)U4J#%id5Oqd z;yV#HWhPUTof{f7HlbXZJA2?j-CPto@jhKFRWQ~1qy9Uf9L`1I`y=}EGx~4zD)IdV z`fpeL_b>YIwfgTZ`tPm!?_Kzvzd0jG+L@6geVdUa{Wl{?YRE{ES~HTQ-!hUU%fKY5 z%fKY*qJc@$#RHS1%LgV&eZi^kWYiOuv|xo2kzs9(D3MRHp?q;_D+iI2fg2 zq3*QD_IKK2<%PkDObT-|(lH7V0c?9Tt*kCZlDPF5W3bA&SRbtX!N0cKItNA|rPBd& z$nmJxe9IR~h&nq<_XGOZr!;B2iXZH}9IKHOmNwBM;OP)6ZK7fM@zur8bB%Wn2^QhK0KUpj>UoeiT z$%DU!okB;9ALFj%m^Yu2sG^&D+DHS|10Tn*78kizO!#U)Jzk z9cHotQ^x;cT(0G#1sfaIOf=XC@^>PLjSU{vI+)N+1{<}zbv9bLbyX|)#0P&7^e)Gb zQo|cQ#T!=&MFz!#(Gg7=vosgXNRhlfJ!&@g*pUJzMu#aCFqsAm{7M5RQ}W*EQL{5W zs$-1cEVM@|9GYV=$;u zYWQcLh-%$xMR={ssDK|QCPtOME#6Lgr78l%zG2^fDgRs5>xAGry}d{M-Bp zY?tS2i-Ct*l0}m0KY*S}gHu^Xx%X0!YJKbt#GFmO<*Q=JDVI`f>GMgeCYKT{GA66Z z?sW|sOz5MhWV2#r?(DZm>H}a^7IYg@!=S3H?y#_ExUnj$J0buy^sUP3j`*_;msMqT zhibl|M^#pLwDX39s;urYxQMCB>Q1(yh=1IP_=Vklp06$T$?=ZWe}(QxEwt;y#l#gP zuZQuYD~PkdhdQ_hx6s@7tnT28!so9Nx+K0q*hH-?qA_A1Wg;avzgmoCcSn&fF5rhY z2TpofHtxbRUu9gtzf3$-mmoMG{DIPfPI&Lu@Jn^Lp{ICP{nEmx(@0a(Dklz&;+jQZ z9vaIhhM&jrDQMnGP0`Q<{t)#v>kKNM8tf)XE@c~?!xjxqO#EF zR=&iksZzrWR*FWGVxYT__cAUo;&;Rnk-WgrBz|k?x-0*u!BlrX&bYjUkFcP}54G#z zg=+#sZG7qJBO27n>KMj+!4zg`cKgo6iZoBzO4XWV(eONh{38DLy@2;OMoH2d*s+7Z z@u!byjxR33ouzr!jJFFYUZK~XE6=`wT)k@ezQ`sm;J3lZKp(z7{g5j9)sI4L{pA&+ zm><)(WRReLJ4bvwKm6^(`nSiVCXFVtoK`u}p91{T?KzV7G7+ET*4`NRlc#({V@az# zdXEUFajgzs(hmIUj^Hr@Jhvlw(?^2S7~(Y5RH}W;sZ_UyIjzvY{T4OmtLz@|-)Q>& zL-GB!;qU+T5rz+cx>b@w!=(1x5gJ;*z*EWF%cH8e@~GB;fR7d&^1B4^s{n?H5^86? z0gR^t7*`(EI#B@EL%K>0?;(I!0ayf|uHk+I7*7Q-t~{!>M%2kJ9r(KsiS1oxU}ga0 zsQ|{6N435vfLG|iuYcGIizo*&JJj%57#p>Uyg=c-EjShO{T4O-C#PKM|HUdvWi+Ze zGlJfsa_Pe3Rt#~q-kar8wap3@tN$eZ?7(1wP{%I0v^p@t4$aoxg6MrZ(LNs{m`G)U zao$?P)1@Z#gCT*!&w$MBI}7zuA#MqQp3B74-3A)Qz0>2c~ono zs4KNr%p(sA8kd=Y_ny#O37!gITw(4Lz~gn`Q~_)^1HWnj62Q?qaESoE8oJQcvW@~GC$ABgd#MhI-+2cpZ4ICDe`_;d6c#5$_ad-S2Nrr20VCFtL# z(6=K@-=0}U-%j};G-&mI#UPta)+-@X1;2TX~BYl z7AgN%mr_kLt4Fmaf{VTsHE_VEjTlxa=1H8}cP3^=bfskg(<@wHiFZQWz52-? zardQ(yAWfKg&7;GGZuZ~h*soJiIJqjp!Z6-BcLu4)H&i+~$;F1RD_3b>aDu1`C-XaSdYF1QjMZY;s|6>u0vx4%T|)4#m8 zSaMQ2?Hc}^{_TY)%)RC6m=3*VLO1Fyr_kHXO?{XSzO&5?p4t)IF2E0U1dr3f7qkPv zu_O4Qu0(xXNARuh2my_32cF&${2c+lq9gb`9lUEh@PQq{?-$_nJAx0_!N301T=vY4 z;3)$9fsWt_I(TtAaA!yG`eZ8m-#UVC|FrlGb?iv1)n?VpdJGPeM?4 zeICayUw$@J@ixD8R(9{UDgS5PFF8tyxaaX9(ZJ7N^HG*dPk z${dl)fBfnwp!l^r8#TrCHp^(9ad~(>HT9Px8kX=~@Cuf6&C@x_0%d!!{D|gJ`!(*z zG3+(@Yl`7%co(1l7&$o&dc*AGH2e**8x&4X9^}2je)SDHxp%C-pDZd6kY3pn^8R`H z9c&6WbKj0e&EZ>Xr$ck5)X4t1SkCFe9j}Yf;?x&XXIDzyOh?tAFfA?`M^W=$qpquT6Ji? zw$oFb%3hXnbY?eYJ7Oa!HC&}&H_h1N<~H=2aq)aSOm7wPizVT;PHzyx%V?GT$6&P~ zmt;#!T?9WXzBZa3xFSBMy>=ig)ghORJX3`zv63XIL$>+aZk#f~qgwA<0l#?Yk)>TD zNsn9*90@&gwRQliISDX`l-bblb8PZ)OFQ~2L$^Kfwp$ei^1w2Vl9k}Qt`s7=iYYY( zC!@X2f}bZAoQ#|jvnB}u1IX8c-#5HTa}>!p3(I*eN0?-a2Skaf{KgQpc~5ga=!|RZO-SeIPdq zRge5qolhVtp0YX5(ccxR)XEFi^97yo%&BnJKPyF^*Msaez4oat|8cqS1o66=_qLvZ zR%|{~b|VgeQo}#QBDR12d{p36@)mc>u4dMM4r~Uze`o#Yz_dR<7jCc2h*=*0%(rBN zkn|m9Xi^H8EVG|`AKg&5LZFu(rNXW35_SkoxwqIK)G0Zeg*nHDusMfY+YruIUvpIp z;wk1^ol0}V&9I`IigW`x9;G4-0oH9iDJM)xvdg-?y|_d1MJJAEHe* zfg?(a4JA<6BW}@~qL0764Zqn%a_K^JJuyxr%-JScea&c+q+$N54PVyq52w)_MQ!3? z^q*5cJgA1c`SvQIUsLw*JShEi%Mp*#?9C22UdHd-OLdp~4aQ&(vMPitkZ)Ud&bkZP zkjRCYHA3vV3Ovd~_Q{BPgizsMGEcx&Kx2j{BPgp#(CA7#UjO-T2zW14WscQ8(@fB3 zb9g4W@UspxLBk`c@kx%=k&veqiZ;|WW{{RmVYqKrb%eV~huZ>5?cmm!;Ed}~)Dn+s zeeD&R;NE?OMrhu&R7gGRW1*mv^GQMXFA8s7!&CLgd!B67>Svw|7t*6zM+i*!;zwtC z&?cDTZ6h_EPzlDYI!EJ}2BJnVv8^iw<%M3NeAP)!%bUL?GfDa?GfDbBGfDa>Gf8UB zOp;DyCP|TwBxzSplJwu4B&j4PN%}G;NjjO6BuNnwQUBXtq{X5iP*J{AXdx5jZG7&hICG)HG$-2t*oYsujvs-_Zyb7>c^;`J<-6HiQL+vcRwrOo^Yo zeZRynBD>hl42rz02^~(M!++uP=NtZE9O+Do_`f-S&ifi&w0+>e@BfYVt{4_mzw6)F z6|~QJ{_HzpmFK=6AxXXy(ek{LF#SH!$$PKwL}%ImFATzEPbYnpbzs^LgIOSwmG$;F z++OyVuLiTgkXTk$_7~i~hPwn-_Wb%|Dfc|T19#n7SsMNQ7k4&RcGW$2yLNCrj0joT zV}m+>{nq3|gV}0r7U^|;GqWknP2{q9x^amH9#{=d3M-E{#;I){}F z9yR9Ub&b36Wp3E{cFUG6^&foDXiA@9c{JFW^B+OmNs(86vVnJpyk3HR~4oN7&D5h2L z;WN8Q%GRBAU7CGgo{~!}Osgsk=C9SycptK7!rj(uXX2=rI)$Fk+;tXzBIyV5$8dsN zUl}R=2fFPv4R+&({i8?uQrUK%?frt6LfiW;H}7-x?y6yq$CoF;C@IQyfuoyqfppAKtoC3})%Ef#(bWtU6Y z0ISKVI0v4D_%Vew=sxPm0-l@Lq%DhuSC*>)?s+4N+_JM40feW*yg@*`cS_T={LXG) zn??37AkZP2@s#;aT4euBdTJzkd2=xhpu==dF*Nqw08U#?%LR2YW}XfX^ph52D=;HY zg8u+5$l!Zv_z$$T_rI*+FTYRz19x5`Nxo;IF3!K$?Q4tlMk8)#zKjSp%Obon2&fv! zvSlmVTu6+C^q;(W?-30Pd4JHmj;YxzjT2!UQ?nizTUOcIx=RxOHSe&tCO5}Zmx|M#xRr8Gi<`DAl}tOQXgH!46t}*4Iu{ zQ-DNGwk-%xo>B!w)tOFc#N@f@oki_LwH?c$K`$Gky22!?9$|kcxZbq$SFPa>yhrl7 z=wh(7nfKY!s3{{?&04SZmLyBYOp9HS5XSFwf1I6A@K~A_;@jx%`Owk zqj9>q=f>`mM|G7M2j{%>*CQJ8xmubP*D86%@Dw$v2nXsTgM5pK7RoHmWcHxc23#9> z>FFcd8aj=_p?Y(bs~R_S-nFKHR`xYjt}S$BY36~`6mQp|e9bJ)fswUHx=Q{I<2R!u zwH-@Ri-qI}&{dO{l#-4VXzsX77@TxtYVxy`4yY0z4qGl_nqSD&>|Kts2~>Ht{FgK; zbNcbhPs>bR3pu-uu-yjj7o=OsO?6@8OHn zx>G&OuE3%@`IQ%`LGe#74YN1rMQrMcz2(q(`-8+@j)A0>j}+|XgxI?gB-P}H1vU`B z&xG)L|*nV@EUxZ8*`yvbsCUpw;#T z&$!gTMLIHqQ-&}#`Ld8LoVIW(9I#2mNz6i z5IFU^hvE-U2&Q z|8=<84uuA?VxS*wJb6S@Mx_W;{PUBDiSQG%G?PAhn0m<%wAXV6*6v#i?2Atxp{%v^ z1c~q<0Y46)#G?%ejyH;0;<#T;pH}Oijt+miCH(1)zaG(?MQisVK^~Mv{vYz6RE9^X zj>GRA$3XuV--%1SJu3ZppXcmPDXzUE#QpsZ!<6R{Qeou{YtoRBdZSztlwIo`zAune zGP;PMyjS`+=3l0VBfP@Vq{$^Ju=#^jTe7RVi0E?Tf}XQU*de4XWzQK>}>aSK`p z(TJ3qJP3N1kOG6w!pA$a_fA6wvZ&|kyg(s+A(x^adH+*kf&{%A6fehFgQeM_d<}$q zbef%%k*fj=aRqrbYh1ttI+ z=;;4ctUPz?X$>9Zl=+yyzffv2WsZcf1^u&95FK?+TN>TiyrY?#ymg)!W%kW$#W3-` ze!ETFHtDzP#I5wa_;{tbP1JAS5Vt+`+ZV;{69U#5_yXtcyz!FoFqS(nG>jdB>e?Ul zc16uqQ&R8yyxpV#9nv>MEA*?-$h{b+Pik_8z>7)_e1W5R{(=d0uQ2N8&PE+Wr~w4j z_!X!J3)GSsH4g0gO(xU_)ezU$>8LLzuKD<-jT%M299`WiC(==W1A-FJ71ehuu^v># z8i80J2>iP*4ol_DF#a0o#Qi}7ztkQ-AO(J00so@{e}Nf)Ch$LL!hc^F|D!s7lhhj@ zhtvTC(co8z#xCZML1xrWpuX6Ix_20L(%GnAAk+W?YWxb+8^s)Qa;_m2Uez-!j{nXL zi97hV5C^6vX2l$0%*J_F(;R|_p&4&T6ZM+qCYuV3lzp414t9m9-EE@wMVQ(hCTbgq zT5o+KZ0k$Z@Gx|8uQ?p( zck7V9wOqR3UNDU2nSk!4Rp2BBwjn<-HTgq@D%}(KA`Ye6);(PDFDjvmuX>a_pJR5Dmd+krOq(`Xo=ColU*9Jt4tO0nQ0B$lM5T7+JT9zxYG5HO|IsZ{WP zU)5b|u+j^UDoiB|+mdOGG)buH4bhV1REI=@V!ohwt4{HyZeh9I5T^M28$xau>d@kJ zh^Jpg?HBk$RFVuTH=3x(f=cs;qFkvaD&Kt=D%VveDuC9h>_{OhcoL%WQNt1KbF9sn zs@?=bq{y~3^MBt>5`0OgRM|CLp4nka>z0Q54!|8{Fi=7suzv_*ct~-iYWUCwU2FqI zfsoai-y+Bi*2Ol?M5b?8Y`G>ffHrcU)$%icr841R$PVV4pLIf+f)KVj{Ht6l&+g?y za>tXym3EodGf{;e$-5`xk{e*u(?Z?lC zgg@4Vb^)O^X4oi!77s%+Y~4>Z!?xj>ZX1NQzwsxc_Rlc2UoV8ID-z}9Co?rUCrt40 zt2n;dgDv~R4yDGWG-fM51w8f0P`zZr`acGyW!*bm0T0l0LDM;<1l_PVt(M zPBBNbreE&8&9M#>25~$X92ZRqYe26&H@DfuZOzU) zXBY19Rh@Ec8wxU{{Lfu!nltbr%vKs=oC;kygiYcrqEULn%)Xo$ZX*4{oWA(VSsiKr zq;66XS+g|6$R%_^X-sSQA<;s*hOrJcVbu!5d6H6aHSv5X5H`3(a3TPEZgggjtE?hhlMeKzu%`ymfN5prDU z$iEV8cx(uH6jYU#8>NN0&Pnv>RPu1Eeq3DKJM3UoS{pZXy9oA0kmH zhvgF)Cb8~iAs?MY^S|1W0JI>1D-1B>1PSglPPB3|2C0;#SoE@Oe6}!Bu*5!D@C97BmgZ);0h#O79{R7k$_bZkyvs;SWu2I ziI>`wsCu!Tpa3mM;0h#e5+u5rNWkETNDMHMI6gZhsI>MZCblO5Xh8y3AhGih32N8u za9zMqiAa1MA1=kGVG^~75D?z}MYJaYXh8y3ATe2xc)>&>*C63Fk(eAN@o;+*uf5Pt zP=FRBa0L?ag2Zhm689J+5=|to36tpDo^l+n`~T(A|d_@&X07HjXrD0WaIOv zVY2Z7B%>cJTtBP*8O%pGSoonpm~1pI$L~FeXGM{#rhnI_hm6Xf8ZwZvmK4wd#<-`$ z2N;9j#{tG?COZA!hksD`tcOB)O)qHF`acmT7d}qBJ-`E!>Y=_8@6Mrff18i`P$__EH7NoeCsXzOoc|tWROqES4PTD z?*NzoaDG2s?|IGDl=YXjT#K5zSKUmkMG2b&O6kiBuNb*1?J!EI}J()UL+ zcgBYN8DX=TM^o~<5E(LVyCYP)@nt1sLX%vI2Bg-at%u?cam8;op}|Wc^0hF3(vR1= z5ndS2jCX5Qo{VQwGXyb@?I6*0D3GUBx^VZdX6Oi*_{< zOKQFSeyp71V9Y+VQFHa55$Ek?Iu}dKn}3e;u)F8sJPZM>aLffOLOT3IGFiG;aWD&O zLdi*15jengjMc3P8^cm;X?&6tJw8dgaD0*!H$F+C^Y(Gu^pkb*NA@MD zOxf#HcBJiaC_$#i^BE`}(m)5g;LJP|#)fc;!9$x;>rggv&#|6TU}yqbS|$q&jb%y& z^KD4&7#?PeLoNwA<&qta@`JI?F0~H1q+Gw0OW@Tj9y6uf8A!wldsT$6L%coK8E_;x z1MVcIl$$IDggp#X_NHw_qFah*<=^4G3;_ZVX(^R2_ywHBg0oZ>un5L%V=7P>Vv^!4 z7=KK)9+-~e3W6*U(ViYtt>yGye;%R_>T3MI@lL%nmXKF75k1Z24|)^%$yQxL5R7e1 z1^;h{2gHKnw5J3TodHKwz!67caL1a8i+qm(M{JlaFn#}+=@tFe_iO*8zHj?`vcC{k4XU*iLxEKibk0 zQHz8rf^UOu9LiyWS57dclkyF}+zhn#TtKEj6TE7@xg-5ITTJvHI~S^u{fNmv!=bdf zm7`4gS*u~n-l=g+*{tnmmVH{yQ@{MKA%*@Y>R-8#!P2@Df3&41?2kL4!BH(!wq#Qa zGqo4DXrM5!Or>Sl_eTlX5*V7W8eVt&y`w!zYua16GXaLFsUFojbQ)SGiw)!?cmjy? zfTm3Ui6g>~{)=7^#gsc@VYA1SPVkvmoc8f#ow-d=(%DQMBiKZ5&Abzpn~tpW6!#!c zzHSzdH)S8An9A49qBL2)0d(v=ES3cxvgcA*H`wE(!gv>Dk+1UFZM=85Kuj4Hi=dSF zbbOW5KAuY4IsAd17O1jS9*aq3bg)Ifn-X@l$hp>Sr3)o~)#h%LE$?XQLMd${`vMpc zEj&-Yu9D(#SKeR?#6}A9ZAcfPv-I|8#G7Es395Rfg)eVH_kohadj}0E zsx@n>SPAMu83Pvoaqq?aji%7R(jgcHFZkV89X~bNv#Eb6CstEPyvxIkq+$4hv6Np! zCXeCNg46l+M23dgbbW{=PN>tHE<^FbsJH0tKh*qxJrb%G8mp;Mx9cxxl^D~>7bBH# zInq;Vl@pxyRDY0qjj10Pe@aBCX!Q3-_-6kJeC^K_)8^8OU_)lP!a<;Z!r3>TsQ?w zLe=W?>MH~_yAB3i-7kgIo`_`u3-T}~K-wDthA@$|q8b+K40!FCd|yMTe^9H>q)+G_ z4VOlK!(p+!?7W|12*cpVpALUYYd4T3oT1@zT>CFP>Xa1Nib$7Ak~rxjQUGvC`f617%yJ7$_dj&nJ^54pJtS~YmpOZ>XJuqmq%^PldlEwMG*P4I6CcIgekRQLY{o> zcKr!eNW<-U@^!USEON^FJUJ<-*JwkATTvYn@mu*3Iz25z-by{2hAW5? zg2=Mi{8%HQrGEN!MVqE&E73?tnvGq44S(wlqSxe)Wr{^l?73N^MMe&H)}z(d@RhDs z4Y9OQ)7WlMQ&mJ8#Wn=3ohd5D0c<~J-AvmLj2EHphi_df`Tm4ld}M!)Mbdl6CN7pY zNiHQ?8D(>?#uW;PiWd2C|sBl>rt9{bUn3+C`aJdShsQko#pXE zy!}I*!|~mwho}-xii^=f{#PsIADM$_FLFsO;wG0LjOB#Mu``2 zppeZkzK@~@UADWG3-}Wza>{TUd4}B?ivbRP9d6|USK3BbT9Dsv`VMfH^PbQ<@baG^ z_I9;#kDZAbcQTSqV(A2NLF2qJvNl4Er@jD{$bK75ik=B`JD zW5!3%h>`Qjp)_)?JFOuegNPjK)RP@gJNA+(-o28&6h22V{Y_EIL#{?Ir>*b1K5Yk^ zu*WU0_?}trUFP4&l$xjF;BY4rTsBy;l}f&RBdl3P4!C{f-=gP$gIS>5TMDIKGjg__ zGxu9Whaj`2{J}7tq5N=>?Y}uY_nSH1Y%jTFXei)pM{GtORV3!{RYZl8z740yv%Apu zqPkGz*?6}RBX%cwOWk83er9zb^!! zuRS|%_s$Vd93BfE)!Oh7ErOP=BLAJ2S1pqGcpDwHZajwAJ-r@3u4%r>BO+-a%uQv1 z9L7Jojsj@b2-thd2=-pU+6gxP!(%#7fH57AKXu*jdh=}Qm``orQ6%CStp}UL`?K?* zt)_3Tv%YuqCFya?O05Drw5#7=D9l>Sm4*8J|3^H?{+~j=sgQ5{6{U+re8im8!|>bm zos4?Ci_$40KIPL6i*0JZBky9q#_@WLcc%Qzl%wXw?3f3s9w*{QU(DJTV=-IWKF0f7 zC2-FA3JTz&GN>fCnqs_@zjVa==t`UY!F-wby9M2e`8JFndoNT~Yelw)N6L<9tG}$> zS*ZkBM!EM1L z>rH^M{o$vG2maY0qOS>-4GpKj0O2TJK%M8Fc+u6T`j;#4>vG4F`x$>2}M zI#y$rZO8)l72-XASO0z8i~;E+xT-&CLy?hCn|GN9-}Sa9CyJQ#;S$e$5hWh<^eo|S zm`+9YsMbvnP=)NokFu3wl84Ir(Iit@BlNOv97sbK)+JOxubuJFN{?u6H9LZqM!Xc= zPWZh~3^Q>01rqsa5Yk-=kG}vvNR!C3AArbrhDAR_4`4GVd%%!tcR|J`G zVp`1Q-TR^44%eCKL(J5{cwsP>4S%~4Z;f^^i8#O(o!C&V6Z8imw@SxqBo?kmo?VZc zCFtp{Jr^~BU-lqu=fe#?_uyaSm*ENw8NTXbqf&bf(hYgs`b)o9UN3Ws&(Q0#LH{= zQMU4DLC)wCd!G~)^u_>cCkSPa?Cv5d%kq^tr})xbF1NsS2Yy0y9jlL@t6aUPT$_2m zPUG}fDCahwzm=RVjvrbiIm+lTLoJ$2Tedd-zzZ~d&@l#OP)>gw43as^4NOgb<6}$< z&*O6e%WozKQ3D?2grX%zgbt?E@GHL-<-LKaFNpy~p?nTRnzzjdGfLa#kZ1Cl4-KC9 z{`quh$g8dw?PA^aXhjw9o6hyXQ4S|6If#Rk*>NZ_Cio8eFOO;+kVjRq=tG*^=6|?I z;#ob=-ug|3pRYP-qa;a)AFuWrj0b_q6zZG>rlzw%F7q9==yBv{rO;&AQ{Y?i1L4aA zzF)h8PZ7U)aw;HwEfD~g!!ewP3g{#O{gi-?1oZ0edfaFMDtu`{*a%=Bn*#JkT-dS% zxIKsT-)j69%NI%YyRI_)@9w-yC|g*wrj?Z?ND|+3m7#38pwdvb%$GyXcW$NGqqOL$ zMrNa)JgW8We~{GnO%#m|es?eb3*B>3L_5E`OIBhi+a_X>(jnkxUi22+>*YeE*LILw z1MT76$~I^umQo52Y~xcYIy9w9Dm;P47+7m>!&^)XZ`)TUV86fIz6@np1$SaKx!->w zb!xhzF?kfum(8Phz382ScFOZ-(r&Z|QV(IIpBlRHFigbQ{x zQZD0M37HU3Fu5=j-a_r9M4qVpLa3;8>0CnE@y-0BjZ{+kBcsdcvhXNvl@StuU2W8| z)#vr?*U<^6!tD8Uc*%ESj!;L=cZ>IWSA1A))Yz+n(vcuRq9O#542q)&-4G;Tu+xyXD8#FP;A0%$j*c=81H?h;0Omm;K@f=I1JuzI z6CwtM2txhVw@+1f2XOS>|62chvsiR@)u~hay!P39pS{0*L!1v!X9IwCPA0l&x`_J* zWr?GFJ><9{bITrYxUeQr5g+nG(?qEm$AMXa+%J$?_N!XGtEwZ}iKmo-4N(skh`}GA z2kXU--LeM@6n{4yVdRT710i)auEi?Ovt?pG*|4?6c&8ubr>GNu-P(d|RU9{--3nh; ze0w7D?UCsHz?ObuzWkYsLieK{0Q=!b_ib=Sii1GlWxDmVsNdo!gPCi z*x%_WOG_H`=M~DT<{1Mz7E1wZLhd}9-&MpgVy?4KhUC@TaTjkf?Y#h@ftQ5ty+{^<50Z% zQc@MXdZ~?~pn(TbYFkROkd*H@P#$0#%DmX2XtH>Ywr#*tlKu##)u`a1F&UcqoK`Po$M z;7`Oq#Q9lAjmEu{{ce;!#$x$>Bkd8XXnFe8M~%k6lVRR%EB5MMTM=4}9Fts+B(6gS zBTy%sd*~vE!l!y|MSQ9(;nrjlU$0i<9k5+BDv%gzrrS}$9>w9JHYUTBQ0>^xmc4}# zQ+VX4T8;SYC6+S4f~#p&)QQ3i(aL|Ctwg(DoEvRu?+4_tg(1`dUpw=t0rs5j)sqq@ zLE;2v$D2Vi!X)5=d2aDa5UYjIf?|v?q(XdkdyIs7-M#3!T44;L`S4gg9n5&L4DXPK z>}=Uka_j*xOn;eT8WA}!tXXlkzfQY+yN3?Jv_{$YO1}Uq&(k!cTnV2$o~E8=OCOC> z6vsqcF?%!!sTkNsh?~7hPeiI`MY8T&Ar4KI(kGuy z_yGJjSDYAxCFix}y0xv^9`Ub14kha_A98;NTgCu(bCFXijK=erL#XW>u#^;xglbmy zo}wrT?>pSKBKGLp7@?^jx!8u3&%|U*MrjE|M5+cO-fh*b?AE$Mc3TB9PAzk>4c^b< z#kFUa?0xQ%iK5GyCGF=f*+Cq_B#FEoseP@IzKgK|STrnd>dy65$e&1CaJ>*DO)PO@ zx*P9veeh!LxIcp}MGUej%kMq*J+SEi&@{-Cwc9&nLdL?&+Sln5IAH2-# zn2=F?DB|vP6p@&li9XKiVfzOe*iFB>6#HYHDDK^EJ-_RVPV=kp`$2A@Vn1QY z)QdmgEm!oYK@ts()}kg^D-IOEyCGN+BQ`KCQfKpy`1?IUG-<5#}lNEmtRdaDjAAeuDLXo$(;t`JPsLQ;zgYZJ0 zTctGG`o`!h1Q&9zttKiLOe;6#0?#*rcX|WRJ4X}Vkf(}kAA6<2%+gfuyp@LTLVTD~ z!FP+n=PKH3DzjcVY`h0>5U>etj~gm?o%m#>)KwbE!ETccknlO$`zE$H=^-?$LYrt- ziJ@`GDOo3M?}7KW@sMXTWN^Z+%BdH+o44sqm(PJPyHaiE_=(K>pvz6!LZms5N{?^cde zDK~R}9cb&0OR83vWrzz%@|0|LBxb9g{uFFBTD6$`0PT3mdQr#50rJ)lpRJ@6aqh@1 z)|e)5_0PvvQYZRHZe=$9NE>2$ck@=)$gS+gkL9giA-tjfSUMhbFzE)%x(7w{^h<7m zH*=KO3-bU9vOj3B;G+PEI1%rkqd$0+KK%DhMG0ZYF8`2VjsIGGY<%N`24d+W4Ooc! zv^sHmM=y{ZXp8rEb&NmY>s000kIlC!MIUY;MdV^PJX!Um^eBxG(5(I(e#;uAae`qO zn{mjx5jcuw8hYkwbHV+hUaY*(L7REKxEHdn=C60du@4Hg__n_ThP=uV2?9I<|~(y$m|&(9q9glBayi^FEY?bUt#tg ziOiqhjM{3&Hw&AgQoc*d@8}E?)kORSkkdp&YKMWar5mWP6N~?7(l&4#YRIWFt&->y zOuOF|6Ez#mS3`imu$aWNyQ0*%;tAAJ%42yq!=Lv)^5+czqY-{vAU^5lP}l~~1{5d^jr`dvuSxy0UD>tm%bt#wwI5|^?aP*$WeYI17RokJmx2kx>!2~{Fm)LK2D75G?XHM813Q0-x?QH2YbPDUQ zcOwxoPAuU5fgypcgrUL{Weh7~r&!wuGZ1^=KFrb&W1+lW%Q>oW4Z`rhNex zEve7SjSVspWFxNSd;@vtqMlKCXp-v=m>JID&zj3&9sEgrz`r-RK5%#03Yf_55DPA# zC3wY+&@Ue~?S{qU1__NNIHcj3;GigZO72x@13wV-Ti%qpyG-)OFv zVR*T8j5AG#*UXc{(c{b;=bJaAdB19>WvdhlZfJEPc{85$+MMF1JMofwG3OG5$;yU6 zV5e@(+94M9pb3ipo_q)S{!>0au6Tu=XS1zrKsPCRo@vyoL346`RHv4CtX)1fXXF?bGd$MT^g}KU&%5|ArOMUC7#+0nh>VQRu;tIU%b)gjsidTtcmlP&YD6Z?1Y+fnCtU|JJ-f#c(pn)v4OdScdIq_D_e4FKCS1Ceaq=7H0S*3^{y3+S~HKwn{S6xm0 zaohygEs`OB-_>f+hpqb;Q7gvKD+U{cx_u0V9X5Li{kh*~l^qm*;4e1V4@qeR&(8 z(dsBxau2N6#%M@awb~J}B11-iE<`!e-^7G&5P!p(2>i=TA%4W)`8^76GOC(xjBGWj zZ4XIVxa8~sd-taQFknWNb|e_~bp|vg3*JoeYdgh_<&uAN&&Pt6O$GprY&5txO`@zF zBAgoG-mXbzX76*Xx7=7J{820uerq%h&PIHgO!z$7BMaLz;Z=`g>eq@#-;@V*uY*Yf zWQ$94f0ex#SjNWZS1MYyxZ~?y3J)#Ghjfo)${_Ktox=4F$s6+|JFi@V6GKH@_#L*W zN2#>dAe4_0ol!5`8_8bkcR{cL_q}1}3dOCDe$d*wFBwgmX7h~^+S8BVyOcx7NqpwW zW~1qT5I(2RQKRXPsJD4Tvmq|&Mv~PoCypGFUc+O0`rBqrPGU6jr6V80RDFONKx`hG zh3mPMvb(_YNw4WRQVtoL1<3(S;!HUwVzM&rVSf3}zdnLg8mTWl@}wfVpTKNRb(}Vg zMLds~KJ5n8VtS`vFn;Zb;O%-YxA1oL)bWozsWjTU$n|^Hc^2~RYOYLPAriPz?YkTQ zjo|?i@4FPKGyOe-yBBsBNh@0nHX+=~*%k0=vLj^4-Z=U37K3iDT+?E}y%L_1bX(l@ zI8u(>X8u~gy2W6ds|(qE711J7{_Bi~EO{XfW8C`|*DWpzR8zIa9PJ35n2S%J#}Qx~ z540KnWZos*_;1>N$w6Vho#b@R-kP5wY=&X9x>&akt*n~|pt^Bv*~=)47_kwN=1xI# zM^khAo6SA8usfzmj}>Tf4O(2?bR(`j@Lw$kvsX6_gOk^>g&oCnt6Pkw%f&ogpHKs1 zaMQ&oSpB5c+L|T=qlvkXQA?|jvaf4eT`a9bAsbXNCkga*Eo6golsQR&&;oHRc!vR} z+c1Ie*NWn&uBBuF0-Rlh9!$6^3*ko)G4H4st!w17J%UC)uCcBG`;0 z^UW$BQ#f)De^LL)z=;mClS$}9gqogyLIYc+EDWy{kkBBbd1cTJ*V8|x0))ndd>aMr zB||fY&Wuk1TJe*JPMMB)iC2=Xo#fLO&8;z*mJyR(77;43jOxBov_$9P!(>!5W?^Yw z(ta0dSw<(5Q0De5Z+|k0Q$npxcpoN3flek%deZUBeVuUffg{A{;2@85v2J}hhu{y7 zc^pdRgK8JHORc`jZJUWrppf04begYGm_2pXyj6%TDZ=F{4-WPfsPGh7Cmp<5|D5G) zLYVdUl!&`0(zX_CfXM$|U|_?;_@}-X7f0!3@{b%ozStOnQWE8Tt9 zD&i@v#i;ZoD?HG~S#VLjqLeHM599hBVgDs;ea;rH-?2q>p!$8?3zxI?qvHUR^TQx| z;}Nc>$Bo3`Qbk-(?`xGBDoZg*`F%Gv8(>&vTu+a;ik#oB z$Y`@j3D?uVahpAQ>^ABHvlhEqWI5NE-hwr{t^^Yh@7|a0+r2 ztchB&3ErhRJ#R|IO33Bf9#M7|$yxKPs*B`vecie<0k&ma*J{P0iOojD(E6NL&smE+ z4)UQi=_K=}2Q`gP%h7g_6jm>uUJO~QUgX^>Wj#icetp&f@x{|%{b8cPdIMIn~ z+j&Lf4Lsoke)o1~7e(hf5}CT7b-?NE3&{OufTZ{tWy?3CJNPDN^AuDWKeUce6q5 zVWr658)*|;(h2SvvR!%9uI&^g)=DXsHraA7mex(@#W<=qVA#yO7>6VMOKk`sat|rC z6|rSV;@1k>=8yANC~ShEB0b;KE#!Sg@o7`twwXw>i!alIVU_V}>ch~OOwIG0H?$dm z#34$x?Xvt5&R4Y@Ct|76xKX1fi7P70V9=ye$r{&qE>%*O|eGZ7;kzPHg%&U7!Fe(Md4Mc4L;4&?z zq-l&9dE+YAp^%tHrB|j!Q>n}y^Q6-FRRUs+yte6Nkz^CXB^3tW^99!v$49nmTJv6Q zuDz8_tZ*^=5!I+`Ws{DuGFYHwQlCn&hnJM?#3@SFF+OB&23vNT zqG#OT>tix`MPmXtY9Q>?K-g)Fhp_WgqW^pVk|>aO>cu5XqY@sxz3auIP>aztjEZor zeql$kc6p1@WD}u~6zw4F)Qba;TEb2Rgq?cvNLh?nr;W*MMSl5wuDg!#*Xq%ym+`<) znZAs`W+YIL=epaL@9RV~>h6>YC7C!Ib=&e=*+g`^jQcSvVa;x3w|bszW%-`vt?X8^ z8sp4g0|Ez`%lZVkV{Qgp+A(^tUc8?U*6-ng&9Le#{s|T!2~sfm)Cd+x>WK$PYkPDS zxS^hw)((Xv$pyX5O2UMjl!Pgg$j8@7HR@RCW->3=iDkLY^(!m8_O9x|s`5TOajP2kGP+Dcsp_HwVVGW`b*K~+`&|!Z*-4m7yh=nEs ziU=kU*SjVwmh0U+tR2@Q51d!gJUxBNF!<~rGS?(Dw2QpR3$%ko#fbU)PH<7JR@{T# zOsf}fbJ{P&ZC#HVjaLI5erC#1qw#XgB^hGpD*sE&LVs^cbfH%cFa=Ssp0s-?$)*Q} z5(AFB?&x(;U=4(6)QgekySk>3#QD`}!w~xxLuG4kFNJCB3ba&DpIt&mtb0q~|J;PG zxOVLiI;20gs%@bFjB=z=VN#80&(demtP~R&}%?3QO zEoW-v8iF%*V<*!U`xtc5b9zL(kP9P~Yg<&K20ElS0UO}L^LWL#32^msm0VroP1w$j z8vhSaG@|yfw}0-b@Bs(8mL#71pV-5`zVB@F%A{fc!MqY1bhfMtq8~-=_ z#V=G8@#;ydCq7$csXxmvi1>@=Xa~7=;tYTB!48@g{_CR}(B0FZ0WEGHgWtRecC;PR zTyJ7*<@=>za8;it-!qlsb9n z{Ixq#|Go)}R!y$%p!%evPSU?8IwkGx~lDUGk2Yvy)`CN zj6!wN=eshdDt$D;x#Wtu^}Q6+5$%)D0cDqTsYTWC236bZxv<6+s7MgTkZ3*ZBABEQ z18Y&HYjl*R=htNFym8k|QbJ>IgJkXXr=MuflfR`$nliN#& z4Xy0fzDsAWQ0N_AJt-sRy<$epE7?WoeBYBhdns)Fm`qauJy24CA#S~HjRFejZP4sY zfmGG@!hF;qTa?nSdgnRo&)$gyHA&^ynFGxx$h6X`wihoD)!6#Zntsv#Xxq_?D3KCj zoF9I*rB-F|pKmo5dE%gL(?W(4|}z0atv<}Zd3t#+C;gNIpw-a_{`gWNl@m> zS}|=0S+Fm&D$3E`7h~y~8?eBYB||e6|MAEQ@@kdhnjO6q1Wh?rZLf*Y&K{+h6mfic zo9XBYllHt%aCN__ne?aRHSpRIM|2?7&9!r*j+LzkG=aq9i-PU7^Y49Nm5Ir>I1v#o zs3IqV+=r5(iM9-J;F+rx9(X7-&8r>p5441CZ9)c)2@|)%;kZF|qc_Q6wvL64pEiuf=MderF&!OM zwKS%qx&YTIf@eu!1n1V3Tr17~!jY}395tPzzg~a(|6YGpA*#Vq>A%D)`)bLwNMF5i z41MM6ggFy3P8)^`AuLwv)@QYtj*5>{l;!`Se=c6pu76O?Ir>L?>i=H7S)Pp4C6FP@Ac37d`?(V6Gj?TiFd(|Kyx|{=_|D_D@fWAVW3h=${#D%>Lp32iBYE zDY4`c#9&wY3!>`b+;+O}@28UP`}kDSeV2D`r~7ugCRRVhP4LX9erW2xTTa8wMf|T` zOe>S1n*&2os-#o{%fB2Up&uf*YvN=x#4E;MT*h-vzWaYQo{RK{ zGyH9q&WiZk3>?+|RHdEoyF5Sh+LFglaE<4I=9!U$-fz!1KPk*4QTKj)nCB-0ZiQgG zvi(8tn|>T|?1eGn@wu1DW>m-%sCy7d6zrgUDFP{9^L*BnYhemfe zMd8ODa!`No1&^XtBZ!BGmfBv$-a4ZN<4ognFUX#8AePjDF{HkmOQc>AL+bimOrm$r zAeG#pj$Rf+>PVB+u9DPCh}2>r!y#;+m7a)G6d5}ZG<;WhwfD`8n*A2YWq<5+D{MAo z5$k~XV^1)f9CO=M?X##k_o_Ew&Xs6Ldt=d%{wr$FC4(s2&;^I-FjKJG z$qM=i+i)htQSX>riS5yk?AEPV(4+I%h7lcPITtqzw8uJ1j$$3nCij%RSb)8^kd5_n zQ#$$k#K`X35{G`2D#pnDhroctQzvrJ;@&Ka2hdDJH!tSSS@wp z%I`7aRlp#~#qN?1aDoB^AyJT#=Ce)b0h8f~&26pp@CNhY?~cI#qG=0pM)~I)C!LoD ze{0!X?pYkMKEVyrt0xt~ny06y|A{PQUH`O7kxr#04P-!@hudUue3SqUyo8vHl{$z5 z_iB)+J1ZQ)um-}UUCtAVRk(tzLZb()QN$#8#)d}p=6X^BVIhp*CB-(U;_C{H*(v@Y z?-R7ktZ$kP>0lP)u(`95_B1$bN~q>@;QiFR227wqN#(D_;Qb7}^W1np*7I56t!z-z z&3CR)W_8$zknF9}Svx-|zTJ~-Lj`6GyWIp1irV*f3#*5dgOMKoZ}_`)xczMV-opOB z&AzuD@BUBrJw)&MI#bv-tb8RAD__+9N3mFE+5e*Vd!N%j7`>l-?)!S`yZ5Y88lU(^ znh}u&xi@U`$>YXP;ES4J0x|vPRD>RUYx>Dr{&TkeG&lcgkM7(Lj0MyETYJxkAO3XM zpmF0vJQ-|B7I5;1cl3>Z_OpQmDRf7d;-O3Jll+C7i1=L&6ARivzn{EWw*g!nKk3S=4f6|GKGgCad>dcb!#y8`ycD{iDM zY1QSjcd#Zexe>inXPO}GT&smip0=cd4A|`MPx1BVTF{F5=qm$MEq$14qJ4hjog$P; z_PYT|=%g2I2hmB_euIg55bfh+8U@3K*fewv+EXXaYe(}WlR(fsM$<_2Rk=g{Cf&e4zp$5X-4RXvh->z zaPa5Wo*crv%DGbH^wvulbhFtN#UbHaeO7sK|_?(_054e4qX3%Eh!+5eY$SDlDIy7Al zl4f_0rG~CE$epy zbH$_A+~_s`g@_`ey(daXpS4DrE1~J~b{%@)nlLVQkI;u-iIuJdg9j=St&ZzUV#_b} z*`%jDQW9BUXG_PD>&Ye?g=Zq3dPWdp-d)gqR`cWU%B;J)#NDeQst{_xO?6+{%=|(MjIe~to^3h2p({;6_qZn(#`CWBb*gFg=1bB z2`-t76-wo1_B`862zX$TumaG&qRD-QFWQE^4q+ys{=5~EPd0xgTQT?>NJ$otzv_2U z4QZsC_~kz?j`GWkeuop^RO?X2O~5#Bl6h7Jod){?eb`AJacE;_D8U zmsAs28TIEpN#pzzR$>8zCElHrf? z0U=0e+xd`j8O0gqc@ft}6!6e_)m$4forhAYxlzF#qcawM!?n@9B{@a~oKr)ivk8Nn zheqUbZA1nSgcEpZM1Emt+)Q2-D2p?7uc`p{au_Q^k3SiwC{-h{UKR1e=OkJuBcSR= zlj00T5wGJq!Ry9x4Vd@Ia3!)MB?Dd7;*j+>PT?U}8uE)oPQ4`r7|swjUWVyx;e$yR zS<9pQ9RAfj2O8b(qOROAHhV!b5{(45@vU56WJ)m3VetA+zjdIrN?>kHaba%#&Qzo^ zxBiib>_*!mVMKixp6x{r=BUn`BuMF!HjW^F5F8XJH-q^Pn&-#XJKcDho_?yITt&be z>pu$b#0-gvw|ZkLx%vZlXQp`Tt`=ix%ADIGp$-Gfon$yXc4d_GFJ51zpm-*c%JuZs z{jfS;AXk{EKg5?kK{^mCX7WYbK&xxw?OQ2bUM;W#3&h2gdwk$6cm)N<`7_NIyUJfN zS6#Mzlb$rxDXm2j3sK`8I6VlhBUBN9DHdfN%Q9dPnGQ%}AhP4GjQ-msp)H2YwzFkR ziH*EL(V$3!kqgvvbv)2k+}J}$Tl#zL8NOH#JPr9p#^zoFXWYYl$czlO40dHQM`ASf zYrnl216eO_PJ?dD%6j1T)UekvBD;84q-T=`IB0;}1I(VKhRP{Ht}MQoX|O7tLJzs7 zK`IK&%Ts*axaP_Srn$<1Y2Gby3D;c7>Wp3aJYk#@SQKYNR8TPjrr-dkVBJ!dAZC~Y zmjX5Tx)Uq~w_qu7&8?|!Pq4<LWyID%4-a;|2c2F%tR1szr+d9!@4-(#T6^TKX3jLD3gCN$r$TYb zFP$=srsT+N7_lLq+kNm07*l{wn2sHk!a&e}qQ}8zLk*28P_;4B<&`*jWxA@3BCdC_ z$=g!IH=hGgVGPm^;X~}l@6f1ZOv766L&tnOf((ilcp@w8hcj1L=T}!rW3lDZAhtFg?UKD*Q=cu+j(U%Q03uoxX%w z>15J;-yjhT`()3{!Q$(o-&x8q>3KPyBjU-rUnho{zd<2p=)ljR2bS70X}?vqYU&E@ zW4`C0OP=r}O4+DJ4>)r)0i!YT1&L9{sra6Q{7Kx9(Vc?pJPxWb8N75(YBAWBS33m5 zL4g`*OP+NbulO#(JL9{yoCE<4){-xVmtC2KB;<=u!XLI3qhEiV z379_ZV_tDMnH%-~?G$lhwZrT9dQN{;FNy;fb@G6b;_vt#cHE|}T&tG>aC^Sy2H_}j z6}jcyY{M7WiL%|HyRZ@D*{0*anQR%fP-vadLZNjcJRWce&0`Qcdx8{DOnpK`xUL%V zRH-eSKw@AxwLlSo^oV&#TmAH+sN(n|sfBLa%$#7@pQ%b~se6bsPx7BmTyy3_#d%nj zPNPTN?8<|%Y7(Vc;T*&=6CyGKYE{Rm45lma;5GGGv&KMC9?%RXgkx&Vs$qkwIIvgn zS28Q*D4STt22~-WQTpaxk3 zB*+;XRMoDgD%8}*6WVyiH;HOO8((B#@)dXFi@uZV#A_>})d0+_d4<86g%3d2$n|P@ zw){f(5L=P|eAH1nJUg+MzmuD7IMnzpiHvY<2pYbWcW5>b*pGR{2b`GKkuR#kC96VT zhOFkxNHz2V{~oIASyDL<`?{#wPIb>gwToyKK#3mUbug zx7e1Ao}7s)vDyMfxpDp^1ia2g4^8J<1$NjR{MR4<_2Yr6WN?aX)$x$M_!e$dYz9;S zSk?5V;XF_k-!zm5suH7RuEA2CjvaF|)^k(e_Eq$t+t_SjLn2u&+Z>LWIgU|wwzT0S z{9cP~PSQ=~&M8?7bWyMxj0IEK=55h&NL1P8W@x9x;1j;1i8-eISY#dhh5k>vFSh?L zp8?f5w*P4=f?E#p*$U<)aHA?R8^Fe+RM2d|C5wXF+fx8DEH-^l)?t!Ae}NwVpJM4* zbr06Zr;+&pog0ShaLL$ZOLe{tVOWoL*>w40ttqnORQNQ?kv1 zbGjnBhQdS%t=f~d+mltpgT}&A&Zm*-hc$-Vx5>vf79%satM*J!A6n`R{5C$}^+;HUs=kjk@H#Xwm zkaO9u_%{URB|~#beR0$Zf)hH_l+?=7rf{eqK775Ax3aYKmu9U*vA!#2tyGwO8^UT> z-j+f(XzMIG+L{nE_WoYswHv>asnTUnZ#X}%#X{qzHp%oh5zXl$5s zUMriZW}6hv=^&q{1SpvQy>U=fK>R)Fjk_afYq?<0Qs0mIi(C5sU`F<koRA)IpOfQSqG9kth zfDVin`<^;OXAsRDNJS_rDYm&%kX_<035wG6I$r6Fyt0?|%4Aph3%IW#xvaA^>~j!w zwX_n5Be`;2IkB#8ZePWRx#m(FWIpPDUos_aDRmTLO_uNINqMl4`HnBzh8~@~)m8pl zf}%9`Gz`O4{tCXr5EwDRL5t>&xVedeYGW%8gxiqLRg1C5(S27M62hhNfGfFO_M7(k zQ%}T_{E@iWB-xiLF#|H?G6pMgLh{vW#py9ti(!7s+RYsmoOxhRvJ6mU4~+6hH5mr2 zA+BWqB-&e-2j-_KEI5@W&$w*V`PUP$CbP0faBXTecZ|0Cb774O%}+!6*N8dpOiP?) zE*s)X_Pr{9P~Wg6*J370USu}HJGH^3Lpum zfg2!oqk?P$p*$$#jXac7f`D}}`q+T_OS{lgZs{Cl4;N&CJsfDy9-bM4fckx~*grfL zj(Jh|CCD^dn>aZf!U6?dt|E5|&)Rq3Dk+BN(2DH9f|sWOEyRg~jlKc+Smdk~c^Qac z_Vwd>`fDIU&spo*NLk>nr#me8J&@Xwqp>?a*V!`gspqVPIvxibTIfYv@9y$!GY!4+ zmwE^$MC-m>GIyIm;`w6b*cO9rs8&NJ&Pcr|ja(^!{ZFeGTgFgBv?F4p{1);&DgHL5 z#c;CqbtQ*7mbq=te_`h~Du}aCY$;@X$5tNlJjdCn1}rZ}O}mp}|4^vk`yPn#Qaee8 zN(o$e_kgI=oAo_n(rog1^~Bq8bXqO8)ioQ=(qk+H&`GX&o}=t7^<3}cM2Pm@(b6Z* z2VWYo6CF`63S!^d5uoGdTaR85eQVSCXZyx=>_oF;S2D~zb;2GOB9*}Y2lno=D(Pod;-X3j zogCIFQr7hJjUBCp(FF_Y;=U1CDOlsXU&fn&-r*5?>r|_;FH#h8o^81Gs(+}G-r@AB zAm$)mg{HIhId8M|p1<>oL&>}gR>{G5Me)6eQz1391V5TqaXme|Jw1>0fff2IuBWdW zxl##+y3v^s~`ev#6R8#3y?6qWyx4GyEt$K zT<_8CyX2Ybh=c~0zBtY>3`fI4n`==ewi^@RT&q*3?i01O(R%(1R>P@qLgfkj#KlyF z|6RILC$6~&1?BPECKS|l7`r?{!`BD#oXHkSmB{bkY`Ag2+z3m7C-{{Qc~stfXr%@H zcb!$B=^jt;Fx|CBA3r~G*Gsi{g2#LVaqe>23af%+@MhI->X5ZtbV&g}Dz@bVeTMM< zn=UZ18Nx|xOnAbciDn_FFR#@!8=l}X*q{si>0DodW=PyDaFuTd!1`7zuIW!Fwz%ol zlRiw0?j%J?G+K`(;v8sGbd(@(dR1U-{;9;POA$b7U&1WKYjdKIMfwYx|7x_qWa=yqv;ix zH2}r&PBzZg>(G>o+!BqUNQ_5^!MNOX9|-V72q?A)$N&Kzi-2h+0Ui*Lgq2^-)_c}g zi1@(4j;;{7ik`i!;7)MNvo_Ax$<5YJ`vP(Q_mHj0t2C+@ic97d~W8^UU62`ne#r5h>ch;0aStzHcg))v>6AP`** z(TCXbJ)9@&#b1x(6X8kXp&sAUr48p{i0i95!v0by5LQw>+ zgDB=0nQFHFNZ^pu8E)wqs7b46Obk7WGaF~=F@FcH-SJ#gs;%R{pajFzz2{3Fnw;%* zd|BK{)!nu@9vYPm!|Ye(up=?Gf(IVTP)wIxc%p?UJ1r|s$0~#QnU!|NS8YPJ8HiQ+ z0`MGJ>0dk0OIfgx1Yo3RJx18%b$rO&Y_{wh0DNneG5HDD`gpG2Y^DMo<%~%M8b;~? z7whI#>}>t;)6#GD7fNKZ^}`7ui~mxI>>S4q|82Of&e)N!hI|Ug50;h~hpfPu%4y!X zG}i4=s3|PX9hbqnEdlTlu4l4tk3x&Vbtmh#1Xht&+{i^9VI1kIMui#(=X)Jvve{C^ zw6pb|C%HBzn;SKxMR=?6K0f1ve3q6N&$=yv9h0Sb1sinE&@lGsoT*o`fil63= z$2(zF!aL*Xo$&2w>;N}zI?#b}k2^l&Y}8S(l*_{4FOnHo(*~J1N6IzLVAFb^+vVW| zCSm6hB+9U$nkX%<``lWk94;hC(dx)xYT0*wWxQB7Z`^+zE)@8WqlE(5IgV}qPSjr^ zUmT}Auod}U$Ea+!bUtBE)QQ=YY|95<<%u@fB#74*y4Y0}5B||V&8v;d=2~4&Fud>& zR8b(DiH5YYG~_yVwn>vkRiT>=3eUN)l}+TyEUz9vE9Rs?-w1^BRY!Gko$9D2^n8Nm zlJlLpcZr1OTZ{-~O5a}up@8rig-xkLhpVL!#aZc{NI++Tu5hj1*ICu}iQ?}Jqp1r8 zCYzF_zG0l8PnR5_cVO1(BN8n<9029^lYLnQ&L&{h6a zjQIP*MN#qB`W_Lw8<7b`R+$m0awSz+CzhS7>Q`c_UL8}l^*vfO4y$F=?@t4bpw?kl z=_+4>dWc+0P9GgpoAo_XTa#N>aH2v=`?IFS=olF>G$qB<;yJaNYNuKNB!Q%HdQwkZ z*3&=#d9@<0|FH=+TUL5^yrMMbVKJ?;HOG0J>$vkApsOQ$CafO3+T9>qx60M>J9vG^z06l!KH(q%?;D z2%kMDhnfy07?z%w-ywf+D9ZreMsO05Ul*3P>q`2p7k?lEaHc8|Kdg@5-50v>HD+62 z+1i$JhMLrPIW-2IQe@V4WU3t0GixiQ+AfQ!ZDC*8Gm*h;Bv@gp?FzHD=cmSWYg|mX zUTZ!KvaIjXiX`ec$U3xHPK;ZpHXE*T{P!a*$iy^+KQMKu^6grfJa`w(bPYumvYpE25#b z39DUXnw7Uzk}7%PR0Mg&t0x8I173WX^J!=wj7qbqKBM^^IsoV;3c!r_iFv5rLSESs zFB|ZLd`H76!w?f)CU}QspTn_18jcNmlO@foC+(DPfA0i*4^uasSfPknFJq?~IHQGt ziQS+=AJ(@KzfvoSN)wzIL03hb^dCyyHKMn8`JWU?GFR5xdlm(nOhK)EsMgdKCsr$G zViY54ZeSn0G_{cGACV^d;y3UuM)VeA|B3J9mS&w5oDE1E#dp-y0_itW^DcSH6_BBe zd`mXSD=>SV;Ysog?pWS)qmzX$OVX*$qIc=kCSXB5(jV78;F=oo?5i41-g)HUcVjjW z4bSD;aMQPMc>dP2@>!?O{q=m-jdNst%SUr!;#(#TI(K|aG(P2;^_J0W`ppp=`hO!n zrO=MK&>oNZvtv!a36Hra-u?e2J_Y^<6u**xM*PbE&-sV0zUo)<4>dk@swrwcm-(N# zp6WloLJ`Z?(PTdVeiI+3WL>l2yu~%%HDP0JHwE{t5vt6Mj1clRMgXP-&g5rut<|gj zgac+uUucEOOgT<0=7MA97RU9Zk^R6ik~*|I@~F8U5IH-oh?sp)g08(vM#Llm1`LWx zIh;V?v*jc+)jC@yD4g_9%kv1gA<+VNQjDUNNZv_K@;sW1eF*Z=SbPaRZ7b`B&o^wG zYJ1U^jSa54vl4ueet2((`O76qj)X_EXmX3EM&W8=7*&8=BGvtcM0PI*gME0UWHGUIZsE*SQ8_3BC8kF8e3KyQoDl;+iwQt;~{Z;Rm$O-te0 zVu{~;QwG;2*-5_`Rn4`A=6TP=iyh6_oWMc z$0`rB9|*?R*54v+e@QP7Fhfrc&ss^LxSUNeJZ!=N3P9O~!#_7myL5tCY~Y(eu0}|T z8+MELO}wKzvHWQ$#c%kWY~l1N`G_el!|= z@U#2_C1I82=A@x!7`sqrWX+F;SDTcrY9FeBlZkBU`Q!t7lap6fylNOmjy~>`TX)^2 zYTH_evovoqhhk9uV7%`#9z0NVAuhT*@m4mmz7#Bh%ypix>iLFzv@Pb*D}LqC&Rj2p2B>Nc@?i{!_1*!$@^BZfmjSR{)$`+cU`wJJ z2q*F+D6y(zH(PoN@t%%73vTjiBb|IkZ9bo|1*WMquX1LexLBGy`9Jgt{Cr3$+Ee@< z51ceua7CP==;Kmy5IYpS-*t&bqsvWPxOq{N+zl>az9 zE|#`5?i|B|Hk|Xp=`182tuB_ojiSfO;vbCl`tH$NAz!UC`*fs@_grfjwpNx}g5O2@qF zo^Qy9KF3kN;38G4QU_F+@fU?v@rqJ8JYIoSiyPJc7A%dPVaaUG)C2HG!ghmrppxxJ zL@yQ4yEkRSqeR=16RcU7!L?hQTwjJME~bBm6J&o1*+I7C=Qt{gn_O)Dt{g`N*Xmr% zy<6<%@G!-zYI%z>T0ie0I?=8Z%^p-;rD}CK11jHt;Vp)?81ecQ2jemM5(3q6 z?t|u(U#favTxU@J^A61>To6lHG@m~D+_t+w|UE(1XkwH9oK-$)hxI3ndH%@1R@fMz{Uv55cMs21bx(;)eUQ7uNv z4T|p;j+1mFTr#vH5T}OWv|{#o*sy3n!+X=Yy9LmJu+e%p7wZ)(U#(hj&wqY0UG)H=W*2os4sUz3>h7PZWw6GYt zjIm3-|6m7J`X)%yhn*U*5+sk5BpXd2S)7C9e`Z=FUl<{|TZH6}XOMjP2m;N^q*|Af z2WTrxdzJ`L*}{(`*mcFXP;={O+BJx+nE1NsE(#!%I&pBgHIrWU$Z`3s8w~GtV*TkO zk+UQZfeak>>cgIEM*m;>K@$l#GTzp#Dv2JDu_)hwdFtu$cTsSf*nYYRV$LmGPd_?U zUfLipjo^BE^Of?_i}Dguh<$JvNwI3hWAaj8uBYFOv8D`AxbdVyYcRNwEFks5-V;h< zJv{aY_H33z&ov=-xvkN!#5WrKO>SB<(@aVR(mTv)r>Ea+UhZjLUO}UnKFTE0IEAM8 z`{}t|==i%%JmYFHC@jZSerZQVXwUFvS1WohXz*%V#WYuo;VRGU zs3=WixjrtDo5N`4-ddk3V=BS!A`|s$dgc#!1{GfM?dr%qRN0+wUxO1Ec#>k9^X)6~%x(Vb;w|4IRPckeT&(FiiQZ z3K_>Xz&7j>H@I62Li^{z1BHw?(B(bC?uHIM720C#7Nae1MJUlE~&E<$Jb1Zg_TLoWBdCL8C%-d{EqslUv6J{w^-IezzDsyv1m` zh;}zu=iMdSOT>`j?RKQwZfKEVCoZ;r8>WZj3pQ$(=rO#-kg3K1>Ebv@&{{il*r;u) z5f+#3Bqyp;WbTy1@uf=+$LNhFCza70bz)6LD;>acpeaM%ID&b=#myU9F$N}la|5!# zEt3I)sju{+D7zne!IVbu&63GTzH;~1Fgh&TMHVP|gP`{I8!J&+Fzic1Mj_WG^6m_t zXf=$t9q3=D3;Iu;sD7Q+s|eHQPSHT#GIip)?+(l4B8?Oaq1B0J&5|q4l5e7YdQtn@tc`L()%l_uiI4)GZ6yQ8t0@N(*!$WE6G z&!7{p#g55DNlc=+ISQl#&|T=oHh)~*NBL&jRnY& zSogeT!AZO!V!;7eO)N55yF7p?lHR`Nyn)f?u@rP*QF~;v^ZJ8p){7K3g+5}%cLVt|{fmFECQqh^#{=e5lR5rmj>h_buQu0Jw=Xdw zd$GeUE=5wRS_p6dLI&KR;qRCgZoC%Ua6%2?Q`J+9A3WYdFWO#3<3G3)13_sTBndb_ zySF3RSU$J|xpBQVXVw9?_NDm!aoWfRA-`}x^NvaO>xv}X&GqyfOtNe9dMR#wYTP>o zI5NNSd9m+#tY8A|%11;ZLWuh%5!3kBSJ4&ND~T3m*t}$SmCF;T=t9gnfHv2QmzpTI zjrh}BWQre3`d5BFC+@8%M{XeEy}%==e8(`1hj?f)?uktg9-+fS4a(FliLz_NoFMJ; z-yppvT5Yy%atDx2kf4dq?+kzxjhY$9BJ$>+3tI1QQBm9uQ zTCIo;;{ZZCvcMvYs1gH-96wo<4#Bjp)r(tiq%*4-+D*w^Pwz5ul_KH3w2{+;Vdkke z!M|kYL-Ev);I4Jj2Pg>l34-lnE4ESq8g@o~T%5Qo`6ukY$UiAx0~oV+f$QFREe^}p z5%&N?!rUM)WRsh8evY^a)(eG7$h@1@pS0I|^`seJ5@(rsJDnAbzkL<(VlkKchJH2- z;J<6tJd~dqXpO6KlEo~rJp-`s*FS@fOPVU5Pm#~3CFAaAfFD9_e z3DY3J`ssvg{u`|ZU$hOR&~R*x@p0V`j&nh8Z0zLVx(hs1TjivP@uy`tZ%77rfg2#? zMh4Emd<5APukF|k>u=!lrd7!3dy9De`JRfFEb@0ZS&Ra>%!gzH+vjs>K13YLRZdQU z0FH~z=dyA?mTj$gHi5u0rMrbzFHSE4t*eS8E|~|Y4mec@;QA%mvS=p~`KrB|5Mdt< z2=}6qKVAd;PBQ-H!<%Wc8p(uuGw9RPZ#T&VtNDil4*e2pGPk(DDcDh>2XVB^AK53F z3;#wkm$cW3xf~#1qPuKGo~*B2+9!~fbJZb}oxX=uI7tj4_oUggq`spIXWD}Zl z<6yume*y+LWU_tX?}27gdL59UmzwFA_YqoTz36&ni_B)khpeMp{!R#vbxgJwZ&%?A zBXe`iT8(qGTqqI+VCO(Lp=iOv<*vYHEHcQ6mtCZ)xiVs+_95j^OgY5&6dOGaBfIw8W6=gIj!)L#F z_0aDPl*!Smys`%D?lf&N>7#MK%I#*{?*Uf253fMa?lj+!byyAjl*pFCKU%ebk7S-0 z85Hc*#wM$p4ge{ymY=NZ5B$t44#lgm5LL9q!<|mQ@}DF#$Ji5xYl)BZgpY=Y64&6X zny?FBdBR8dcFuch!Y-ch5jX1mTeWpG0aQohg5jzb1Xx3a0wT?e&;&E(O~s*jqO0Oy zym!FPn7Y-3U8+&zKdj1~bIr^cPz3E>BosDN-B^H(8C^{Dpn9RlD@wbG_$)2|og!~= zyGdoPm(T1i2B|4>UU?mIQY~E%xPrp0W1{gH;$SOx#&WRCPup=Yf=WzDA<^T~PhoNS zG=@_IzFyUiQ_zupB{-s1E9y=+8SlW`5X|g*%zJGU#drSV;)4)^SXC@p)v?V#(Q=@y z7l+`}snv_}zgiBIz6l~_9ez|pvYT?8*b=13IhiD{9Pb3^ky^54gvD6oSwVu<3Dyg^ z0SqVfIbP)yf>>TC9B{Do|L!#nJQl=T};~Lc=u?UE#lR9>0$?&i3c=H|_sz=kbg2?*DWi|BLxx zxSksPc(u~FZH2^hbdDSE8ozNS$^R>?26c=!2oR$Yd`H2xk4(JW$F^%J?kD^k} zV+O|Y&+Tz}&g%oe>Byn=9!!@KCO46JB#*3kzz^&rlI2Z z=8p0VWGgdY0cAClC8arRz_6<&)LAWg=(maO1L6N!<-dmq{sl9D;vW~yz&zjXvmi^n zdg}chNafkl0lda*b4DOoGlY9@yO|&Z>h>9rn-&s@P&?bsmO4!T%@+n>!>twC%kpTX z2tPi1%j6af;)R!BuCX#fxA~J)V_OrC;P<2+mFk!C9JFlw@GM$X?L$e6YHSOJeO+8K z2lRaegi|Yeer8%?nu;QCNIJiPrpoU9(ItPyaZHt1NHW{;CxG(S-q!HPolxx;q$s|N z0Ka3JT6#$PLPL9VORZS_Db#z))rAS9y+{)Y1`a5zJp zVYX}rfVj1TG4djWjKHZxwsbaOu#n8cChSIrn7tk?->qu-$vk*?USccD-=8D#I908v zx2nywBg)#vChh_TRTU69y}JLDs~qCDE(*;nrRx zffphVrZ{*8LI%JyAfRy>o!KxA60C>0zjlYr2NFJyEDOgScDA$^YGZb{&B^S=wp;*X z6(EYKh%^rq7we3r_SmznhLvA^;2z=>H_=Dxs6DF{@pduED;lsvLOfIBd9g;2Ow$PR zv({c_iQpUjFX2Z^X4SajwVnz|Wn534w|lkH=+>qDaSr|pHG^y14%nl!?JsBY-$?$u z-oI4dtS|YT_Yt2Ar`b%ere+MVP0ezx12aMY{qp}-&yTc3E9=X&>5asIEk?umoypHRt zvOHUEncFs2OuW>LDOkFO6vxv|d8*^|>@gO7s&-6132zfV;JB*QtBxO3Hs%Lsna`Fh z`k2ob_x0+DgJ^=+i;mXCWS($Zb)246PPAR62gpPep`^@h%Z0 z;bacprR@8Qyg0<0pVlvz4s0q#zx^( z6tUqEOENxunJMZAm){U$`y=qM>1QM@SzS+S_<4Mo2EaK#V7G^o9s^vtraIB$_5Xe~QqaBqP)!gb7xS%7DJlt47)BGxW4A!=)&d!R3R{Eo-~A z7+OQ1&5-HhyA6gNx$y=(8CqvM=!E+a_VxxR_V7)%U1;lylK z@9Oc-$X`Yu5f^BSo0D-)I_jAm;LiRA_MT^XWd|h?ekahD#g@dQ)+b$TeQC#nq3McC zTe`$MG+j{>>WxEzlf(Q;5=>017aG;k2zM;5r(d0hQ;eMDB9BO9LAV%keFezlx{i5e zo`sA%++;NFqPyu|4mY3bXFi40&M3}sx-9svCS-}HfU-v9_vU)~x*b>?Im<=UC+G_n z#1Q~;+}-8Xy*3|s%uK8rj%x*6Pk$T_5H6VRDK+cH?`)22*V2sZwiV->9nTcuTZYKJ zzLyecOJ>1K0SAvn%`=a(G_TFa5D-}dvesI6iV%DV?>j0{94%2TuX##P0Bt_X(sD|p z_mO9j>MlS5VbyR~v_u;PICgs!`BxgjsW;wAamQ|3USa6}5%(t0QB+yncqN^N00|Y8 z7F=nyby{$V1~E)T)1)J>r2|nwg0d+Z89|BAfgk|_otCsk0V=C2Dmsp$;D`Z~(S$%2 z0t7)>WCj5peX)tg;9!uY{^xh!tL_d2bmn~D|I0Z!T~)8%Qg6HW-Q{=Pj=@aNT;T0d zmb*YLP3o(bCMZ2V&u`0&vOrCKLttlqFLX){I%PQ1ZOd!XchtK)uQ$FgHs6DY z?7Kvqx9WIKBKgQ_d-?m6lK+EN%imooCVd_F6Wx{|>%2)(c>I2v?r>hVMm_%dD|-B3 zIGWN-OaUnjN~&K-*HFYC+_^-lPm8$ixYom4(|q$g9(mKe4y&o_JHhb?Zb54C7vcS@ zxJHIoM@&5|f~OG`O1C|_MRY70J&0PD-%-!LL_k&W2Pt&aP&=86xz=5Xyn5ee*5_BF zt>RMestyi}kMciM33CC0^(<{GU(ugbHi@XM`ne{femPpB4YZS;Hs2h8gDLEv@^1_G z2h4%ZuT-MG(!7p*C4n|*;{g@?t+)51PIVs8gkhjxmM%=u$8T9i_?4^0eV>KD(7~+O zu^bO@Hj6#AP|023pBaB4oF}hE$VEW7mmiMhx5b103`ER}Sb|^p4%7H5NUn(&fT=mZ z05AEQ<5WVO2Y%SSK)DzsQ5jg;K)bI8FdMVEBTL^s5<-hqRBlG zFlkmj_!i$|3|v(OORJta3UMFr!FjFJ?YIX%#YRO*hQR_gGaEv^)zTfnZZcorF*8}d zw#9sH=Zwx?fNj_DOU)`1m}M{8H~TM;$oNmksdMk7s0YvtY?3Mg=)uAQrpCTd90&@x zkN{YM{^djoj?3A5&E(=qgdz)P9u)TN<^)#u&YID{5 zKZiSzDD$4Ex0wcZ9tEEH*1f`Soq|e9^Z{griYns3~Y{E#!#FFt*qQ}_eO?%X-&TTwNhd8lDV0nYZ1IrsM zDrg<=oFnAjL%(c5nGf@40;FEJ?W1V*!n2!A$`$lFQiXcqy`x|SY)@~7dI7`%>l}NX zV>{Ff5&0LX7asjss23)DCzzSFTZHI))Pg1>bbolim=(2O?D!_KD=t7~rtuC6^y=1= zn}|8JZibq6E4NY&b$o;@`I>n`A0U`RoPWVCLYo055$9ttng~{Srx2a}GLuASV3$dD zG@>GR!O0Yxa!XH}@<>mcGWJ%Rvh7xzqQu0>zgY9aVqV~{we;xo0QC9rZxqcR8B5j$ zLt~dH{JF>Je4K`u@tw|BHP8 zSR;nGrF{R1&ss=QlZjv5BP6L1M3VXd{=caEcjWv3cj7(OzgXGQ|4mOkt|0!?bg3^G zGUz_n5X6Ib9yE+~dl8~w>2$NFwqI->kMg>O^#*{A*1lre&k%*0dV}jLX#NE@Mh-{A zzQ^GRM(DzDKcBY=%(wwpxhQL9Kmh zAL9gyY4y~$i=ffXzs{>$bIl^XTAeU@^!=k{p({k8nH!gxg&y7_1ox?A8^+&QbP?8R zPqQQ{Ms>l_o-N44>JPy>2mprqA}lZXxW%9 zwjT{O$uF4Hq!+;udv)u+7MZ9hwUgVy)FeL`UR*%=Nw{wn-BMyANsgi zI(?{YN%JQyt8h{k{RQjA{PjiruEH?;RTxoNl$6mNJ@lEFqp%#AdH{3u2q~<@hCS)P z!WJ7gS&o#h2^sF*GZOxgzM_5;nIrZm#eRmJhJSz_7rbLD2FG$cF?)R`^r8S)#f}Aba<820C_;)`O-h`5)e^z(^|)fOh}YfU zWKSq)MihHeerbd~d6b0j8Fr?#W;W|MINm8KYH5EvE9dc8ETc=jjxo~bur{~K?HC;! zTjF*+#6P*fWD5~BGvyfTJ;|=lBY!##=XntW0vRB}xMe2*DUZ6;q@GVBsDpa{G2FyG zP0^-?{o14stIAbxs+??5osAUeAu2VJg78m`lcyt`(8H>;l0P#J5$q}21j<*PJHU*5 z-lUG)jRF#$rla7nJx%JcEpU+fyksyGBLBOH-JGCY&)>fAR;5jV&lIiO6rI>k`CDGU#_TIhm2mOcE`4+iH*2Z$ox4;}`~t-BinsB&o_*;nLe{iK1vFANgh~~k0W7@ zzVd26<7B|1HN_1d)A*jokCYw%nMlv!ma^l2{DwgvjDukY_5%b7#gPsLy^4l^! z@!-eH6rOPv+}0?Z>;7vw|`HSl#RQ$u;boyE@AK^1r?#74xDnAV2mT^p{kEvf7 zGBSHVk>I;3%J|@-aD1?{><=y$-&0SHBP$)wE2Sg`A2Y5phv++iMzN<6ECTj2{>IcJ zM#?ehn$oo&L8@(@&_YF+svuS>@B~)fLYSg`UcE)qcWjRYu>eA!304U-zH4YG@D$cN&-SKe*wwl9psmJcmNw3*&VA{$DI=hvaL%Qn@M=Tt@L|t# zdbI-{|8H^XTtv2%P0Z5oKB=)dExWT@OLut6>tp?gV*Q6>UH*gcllJJD$piGuUak0Hqbt%^s0N)C6RrZmywF*$ zNN2$(-D7OYFT)bMY~Mmfb(X6`4Rx?py--j>6J>KyBvbiR63 zzyOMBcQ>EA+MB}i+ZOeA{oVQ_$e5f1j>AcBoN^TRvtB=wjINC+YDu~qE+)dGjWuH(At+p zf>V+|Y%VxP>eiUva8UC)@<7QAi1mAX0huLE>g0)i@{m;2!ZV4FY=9u8mM?})FS7CB zA0IV5`eNY^7v+n_zuAFTY?u8R{@!)`+wKAhZ$kn!<`J$zYpg7SAF#p?-*Ut#`joDH zaL{_@1F%%{@PJP)gX$^2n^&JFeCe#eAas|gP{>Fs-VLE(24vao{LN8tsH@ZV^4iW| zL$>oV1q&jP-M; zV8#rzlgki{7hsOgpMK25XU!ic#o=Dv8ZW-2ll&6!uj{wsOO{0OuODu0#o+YV>q5{z z;6ov3zi0}4phaaAKUI7MXHWvPS9_>IxakSPM;oN?qU`u7*-u>+Aybnkv z(}C#^SjrE@s-@*EwI%UUaKP1wm-!4dLFETy)zY$-Z$kS5y$UQG!*3d`z3DvbO}VA} zVRF`ik&)x`xdX{laajJ8xgcC9U z3?hH6j_>(I>R;NAC;iLX7o+trG4G3+EFILyz2kbHIu<*k8`j zzkI)3=wE)?DyGG4ABbu3^<+#7G2YOLV1-~Oz&xN>nC6@@r!NJSYWH{;7!!Vu??uif zmu{g}jh2tlo|7Lgfib;#E@8s=m9#?lP^;?r-&Tv(Jn19LpmEXRUrc?;4JcB#-9bNz zx4j4d2SQIv44p6xDKCJ|WF_g4r2oU1vt27-hBi?_}*=C4ub7 z<_xIZ{4<1DF*kEw{;;`;s{uc)q&hw#5loH=*f8gv$XfZSlGaL3`3P%;SK@;*Xa*Bt zLtXd`f6dDf$WKb}T@i)VZ~@6f&w^_h_8!S2{zK)6z_tjDJi)2X17;VjDzMOTTDaos z#boQA2V3`cSJSE7?HEn=6wmA@3k$C!8?iwXe;Tv|NA@9xw=itHL6V)*uHr!gQj?0rG*{j<_(>e`_#UT1D73 zu+J_~1;VP@c>)k7pbDFDNKxm0Adcc*M>bhrkA~%S9)!mjEw}0%?0_#mf96p^G-5jl zM((k9v3-hhCdn~2ZA?!{kjXvI^sXNHK!xxp_y1;{)Ry=FX9d%3%G*E}qToM$*0r=U zHQmO-f3PSP@vgkOweGL9D34r1TI}`TELQl|0hsW8Hlu$1@_B~boFNY@NM*qs#xEI3 z{_)R?yv5(Z^e%Ba@-9GLty=8n^6eud=OTTJ)ZUjYQFzfPv^6mXrTN6Qjtcynob?Zn3hRr9x&}jEoU__6*1eq#{IyZ$&i=}Y z0}4yo#Dam*16xW(e>3C1OaAMx{il{(>B@gg3t9nxxd*3y-FBietKt@}wp-W)q!oX6%PISad=T zDSPjVkx#uns(`U(`j?j#-5#Ul|LW08;!hd|vsANL$6-UO`Ul4=N@Z~(HJRy4fO;c~ z@XRV}f6_4c=?$pzzL*xUAH1L1pb+E|D>ir@yN71cF!8IDh8vus%(?wQtoz?Ad*O`*I-}I8P-Tz^x{wqnYyK zZZT7)z&KC0Em^UQ4x4{fXd;x!+oj_6$~Q%7P~2W3Z=Vvkx5YvfM21E2?+VSn)vHy9 zy0z9NZ5E)bbaaVVx9&wfy4NvUoJ4!SjE^LRWF5aul)g?=nGb3ET)u}tC5k^@Qr1BtfYL~VV^tSU;-Q4(F* zI4T|CjDcrx83_J-C+2>j#@8O7mCoO8hwcrC63v3ORtml;y5I}wTWOtmb!%aZ*SR(N zO@10X{Hw`S>;C+4KyG4Z+7(pdX}UTTMr>7(slfw{WNO<5tSw9&yt=iAS&`Ydh_KJZv>3(L9Ru5q2KJLTT1>(<(eE!gC0p*bxE<-hw9fYE z>2WNrpS|z`>RkvkW897$N>fWSVwh1;T&4y9pNqH|C|s-K15RNko-y@~e~PBr?w9X$ zr*~|F*s6B_%e#1`*jFzGJGO{A0&KhOn2fejI3* z^P8`x#s0#JX80)@9nH4mb#z(O*YH=? zhF4LfRTopSk&Oq1=kIJV;HytCP1yuTv5hNnC{`|=T?FHD=F)k*O)E<$`?cty1G%*G zUzSFV_ns5jCd`p`wRoLxiGK6F6aNR7PUCXft}~WSPIQfFCmM`;MDCVL$3_PXuOnN~ zyQuYZ^HH?T>&UK$QdBPLozgUDup>vV@O@YbVe=ue%$wAljptbEo!pM(CN-zlv?!Wn zHkvj#xfOU}?bK-~}wam}QN54N1+%3L&WSe5xIG2B&|eiwZKkfRhge9 zi{C0ZIyK1v7tT!Aye%GuyIYrmCGzjrC2J{F2{D znm%4F?ZBI+lUGBMTG}7G6F*G%`Hf5;GGF+Wfx}ptcag%hA@eEH>{q@SOm{W1J`ht* znaG0PQ%itSt9^w6UlRpbi_)$~#QBQQ59z5X`SSq2X8jCSf}Y?VEba7+d*MeB(LW6S z&yq}SJ`U3!V32Nv`p3>Y-`Y%q_bf*JFcexG)L;gn}RU1Bf4!HHQy;sL2TJFwh*t+DrBpd0yRm*E>KtcRMOmlBDN1fy zqdNbRt_WL74*E|jigv=S9nDQUpz3d7S?D9KTR__je`}wtvn0dd%fdGnu7|HPVt7&H zCYE1qwkkK6Vd1u@J1Zahl`IYcBqp`x{lfQUESRD4es7V$=n9s0nyGi4X6k484v$gE z{1sijX~)#Lj~a#%ic{C-J5u(G2HGfx8mLE)VMpYCNHx=%)j7K_!icPJlsqZUA9?6Z z^|MNxK}J7G_7BC5>?g5x9mVOofCV#)$S5KmZvrXZVk7^oK1=!v$guPO>8aG2A@jhD*rF;1T^JZC( zjh{EW)zW7EFY{fuy7pjhFtd!;Mm^#1{mRJ=W^Ux2-=vdApqoum)_Its|CC*w^Wuf(fW5s(X6LVjuNH={o(W$SnOAPDkx!xW~Z<)WqDKa?28QkjHLa@#S$uu>Ye_C?VvddDnFG+Ezu z#Bix=H<7kWx1yb1-TEhyBbjnQ1JY{k_v|`ixYe}}J96-~o0x9>Ol0Sa>7##MjE{c* zT-h(!C1h*ap*EtFEZ}41y8I`TrleL`ptBYeB$$^f#$C%uWk$7t(4TC>!W5RRyAHBo zhIq%H7E8-U4O~Hd@}N}dqELL3h#>kH1TxrArERt+l@9|VtPJ#fk(o>YYWJj)yC2(u z^OK+fd|6TP-0#Lx&qnn|%B)p<~LW@-Sl7I^MzDTR8_?~TjSVQln7 znMdm@!jQVuVP%L>0l<{Lh(mf%E$w?s=pD(mjkW$>%-%@6((}HzLo_<=?o@TIj}(iw z{3Y7|hC8xD7HYWLk>_705E1Q6V}yvs(PZp!v-`q`|qmVev_Sbno7;LFp zS{%z}+Z1i??Bv-tg;};3hdkOuCo{IIC6nR>uvM0Jw^00gv@O8mjM4{`w}(DJ1ZcjK zB0_u7hSN;D$Ikpev;}17Ja}gCwV%rk&nvm9F*{rofvX$SHnMWw)_*WY3{85D`al`L zY5X)vWHc^m)a>$49jtiuI6t}y`Pzi@xhS7Y?G#60DzjydEIpw})+s8K8Li=rqC#Yx zMKy*q#?6wIQ>|vkxNye*vPMfd<9}IWY&hc|t&uwQa~{rjo(jX<_F%<#G1Jm>{D(0R z8!-rHbtdyy#e4M2ikRlIGe2(&ZfLIkv|$``+1vUa<)7EdQTAxN@yI)-dh$IjdcXTR zp^@IQtC=nJ1j=1nrMieT{hl*NUXBA$==IC|n#=A#*p{X3n7Aq{V9dCfd{I%B!XGee zMQo0rJ=&MN<_ak8)#7)p=DP5IEP&6h%hK+4GTka4jqUAx<4y=08mBJENBH(#1Gk;L*P3A8(W28Xh3$wh9xLrA@ULei-h9Qu8zx?gPhVq7T}bA9Pk9yiT&jnk=z?CwCBC1Aau1LR!D*8Zcbp^$W0%^Q_;W zERpH)xGCoYMZ@$^=lzVO8`{!fgw2zP{FgxC4b~8DSSD9NMoNN+@pb3T(zUfLf%9gG zZzT&DH+z0>-k&_C=_v9n8s>k>t@y4Ax417OCRXx3QLQ|C{;G3T!!S^8*ZeNwsT`^~ zb2$&Y7~|!;Q*^w!l&_I{?KdBqVezq7DaJY#R|O|u|IMX2oW;!F&VG$oSVUuyTgHAia(?^1-*fG+5@uHrXc zM$12mLjilj0vms)_Lie;lw;p_Y3YJfsh;?eM`L#Xp>Dq0*FiW8gUKG{tejgQrf{M) z%PVDT*5d_aWk!YnU^mvInw8gESlYhAy)^f$`G0J*##Cl(FKADTp#CZ{!lrq@g+KDV z5Z4ftzUD)iqT%3z2ZSNknPos~_%tyGXNu1<9e_P6Fsj*7Z(5_O|BXB?H_He~P1~W< zhUlw08~Q11Dd3T|SQLfZAnb(^2xN_8UpBV{t(i~TjT=-R26t`r-OF@M#^U*A71^YZ zT@4Hfip8TRk2ZmT4$O$Mhok2d<}Qpgs}{q%n~L`sm4Lr1@TTP#sdK+PVi@(1J$UrH z8og-;)#59Nyt^HvUF&5uL^8N#uSIYu(ibdI>NgSPBOGe4W2|facvK)ke=d!B*}RT` z+`Mo`&c8(EJhVJgjd>l(Nnu>IT0TDmCtqqKAy>(2S43rgY5o$W9#Jyndo@v&6h^&g zUPme+6c17O=BP~lqB5D+kxUght_^mP)oRR>ass&4??eL#?24>aXRcbPuvz6YY|+%G zN!&0SKZGbEO;_uKODGeS4hvBz7O$TyEG2r9MKjIOT0Z4zIf3})UKzO_0#xXPAW?;` z2vSz~(?aS>4!01dLRkbkGi+T+rVV8g-RlsyL;G+fjkFIC%TuhO5f!fWD}WZXisT!Z z-Zh>kBlHY)6=wNZ*Lp3gzq-5{8OiTU&iJDG#b5~>>C|7JPYCzdy|RFG(O(1KkM1u| zfcooR{0IaVuVbv)X=~1^0%3t%>pduurm37HGhd0cYv7rgfY_qj8jDGqw6A!X!q@m@ z<6!5Ya%;fs@mfZzfjPiL3>MNFalArH^tEDP+XPd_%Ta@FdqqBSy4K$*1{BtTWc@p+ zWd$pW%?ch96=X+MQ1LQVkRDaR+&NT1pGXBaoKZp3q!wS05w4(}sNmOAhLO8q!jm>7 z;Ik>$PPQrCr`VLt0-JJgkxfyo))=eR8fz7Q7Wo@z{+ddt7WQy+&>G#=`6$`6bvn9O z;T!%08Dk&ocd#3{{0W2uV1pS%qrse1|IabAYLqsLBEe6MUS#Y>->KVP6UA(4TCDJV z6r)woVuSIznV)YL8B|g4@+PWx88W#4BxB9AUelspLYQ}!q1+kv(WjahDUf-E{Wn_i zx86tZ++?k3UZhO4tTrl|)Euk#gWt1{zADvJdgXi}m0rdFjeYce@0@KPy}clc9-PNM zx((|7e`z0m&Uo_jpmc8hdttx$LE~bDmthd~#Hl|oR`?om{c_`CVZXSdSJ-|L$llOy zuXLnC<5&hI-kZJ5&fmY&)Ho(#3)El0E}f+vgyqXvXdZQI(Q+8AQo#3YuWtQd7R~aF zMGzM+v`A?)7J`(_^9@lpj55H@;MKx1Z39#y!3~ae*miYW{;Xx>1+)4|63jw_9P~LD zzqKFvajC_xNtnSLLihuqDEAyR2zHFn6$54YPoZi!$Go(Rwuw$?pQI@_h_+r-Bpx|k z>zC8 z40aqlp@GU$Qg*u5#g7JVY8ob!*O7-Ot&xe7~0UbxIC}}mntrI z?EpcjW%|sne9u5Kc*4lEr4V`fB`{IH;n$Ty4SG$-_r%4mUluHegOheZ9eNCN0HLM( zr2ZnJ*IWN2FB0Ehxln;s`{jq^h3%g!L2{?r5!07Y=+&oT#KUGyb5fY!r!PP>l8pF3 znXjF{xw9I;IWp|{8g@^&^E6_E1t{L0L@+URd=GpGbz5`(S=z;BUb__FKGv6J(4u-1 zKiYN}(G#8wpL?7vB3~29Z;50+nVz~GqiI!8K(`AQqQABy2&~hE?yBQO2SP>`^pFD+ z!3_8u>GEW;jp?^f&aHBvidU2>_o?=Z5~Jh>-KRR59K)$3{td|m2BV5f0qAzBD}TQh zP`}%Go8Cu^`b8ZC;6WGSjB5D@mmy+jFX1~DbUX6AK_HvvzwJ+p$<(UVVt8P)S<_OX zD9qIJYA1Ke(l)t-k4DdSIIL$C;fR{&Pm570TC=)#Pi}C?>t?1YZ8UN3pO%_5C4p?D z)wMfvgPE`6QS6j>m%4U0a;T+QuR{>C>w6ZQUd_^`rA`72rmUCbkZ^kA`7%BQOfDx@wXg zE2O~Vuk7Y2|Iy;Tx{&~Kf|(1LHprP9%v#R;W!+eC$WpJ?-^t3GElf}N2blx~^Vemm ztF|-$!IK_KO_rtH8_ZhGg860C4yLZ!2<=WVt3>mIyN5>qN5Jzo$IO`IZ;n+12Zc+A zp8=()hJ6fSx1uOT5Z!DBp3tU=Djb_P(e)$?(+DZ3j9JQ4YFIFH9pJBEx%US$geKx; zQIiKQ29cVYTtHJeyE=~s!_VunQY__XRd?=OJ17^kY-GXAG8UZPDB`VaHQFAYeKUqp z2qgU-z}{!BCUgpZ(QQWzb?uPXjV)^N0$@G=U{Q<^)teg0v*j`YJW++NDvKablnd9EwvlYYP4lYKrC(MujV7^%YCom6C z5VO}=!MhwYj8M8Pi%hG!;Q7%OZN6x=5xOjFXoZTtzNJjyXUMPUXNiKJ@K?n}ASk{& zZ5X-!>92Rq?;;?iI;VTmc294Q5OzJbq?8?fCmej{frwmSn$wpRaaM17m8ktdoKJN< z$&?9T*SGV{Ped_-lz66K;5~t{Nz;i@B$^m#2NvTo%?8N(TgKOszy=8N@km`{K8zvB zL4Rk8L7?C@9(C1rkEM?Fo@Sr%=Wr(uR`RW?voh3 z)9i(nzuyCm;@p*m6X#hyQ1STh^}xG0q#Mya0QqhGLOiA(c!q?Wt*(bhwl^AH3UZLWNNLIIT&H!EeQ zOTB61#EwS+1%b;+7LWD?bsfB~EF1j?Ro0=}0}Sc*B`Pzj5MQrG_NK?!n58Go@}>>4 z7cN3{u(4TzGM}~VP+W=n`~AB>96K9cZmoaEjQ_p%H+ zeO8yYDHNMh#+E_?*NgSttV4L7?&W|a z-gUU7OSlJzwpgQ{$Qm8+60Om9UuvxfuN-&&9*hbSg$NAbP0~qFaeKO2nz^9FeJWlp z&0JdIKGjYw&8#kQpK7nJ&0JpTKGlJ^nFMuh=IfHJ$t+<(a5ae=8;p-ZaKkLkxXK1Y z8?pc_=V-cI>e04YcJe`$;82GwN5Ze-`gL4~=%u%DnM{|fad{10uEXUebcr~NT&2ru zT*lF5BQB3`ZZQ05v1;HhvJ%gF-9=#bF0Im~-)Gr%P^;#XyW@B+n8?>Gih{r%J6P{& zsp>p<)}_>h&nHaF0FUdAPbJfoKSW((!UyFiG&c87ZKs8{+ z)VX&dx;DOCtK4;vr8Q5#+O)r^f*p|})0k1U>mY1#SXy)8zg-9`TDj}6N81Ka@2kp* z;pI==h`t)KI!miU?{+8`fvU&Q;|#l3o8*i#aDj0PX+5`*2P!Q*vPvSQXBcFPh)7Wl zHhIBcKnE+#zeEdu{$N{gvAFzO_6K$g(hK~gJoyUw-jxOIbB|KJU%}G zjqFv?U{G0_Ut&EoQgu$U7rtLyruTEpUc}+G#FB&X3)8i|FW^cU`Ad3 z&!oBRMb<(-gjp*TSZeOxbjVbTVb;X7(-irkmM~d(PHJ>0wMHyhQ`-LCQd+RTErqa9 zNZZ4dmFGQr_JXZsCjM`r4EQg#ynEm9VXXrl*3`foO@?8HJ>{3IYmnctyrRLNU^5rC zVSH6eli|?=QqCRB6G8`wCSrov0d4apL_`z6mB9V83z$ja?HxgEyKNLimu^S4zaT;J zT^c2rP+O5l{AB{<5pLDFQXc-DrZ~VU1O)JnfP{enb%f}^Iadl3oI<<+(K#gH5S>E^ z;l>3d2;@X8MduLGFij^pQOZ_c?jRu=M;UvyDWXgL?0=Du_F9ClZiyf9{+Os0d>;AecUPTLKB^}Udjj#V zu8QC{+_w&4E%`mj)Z-x2taCnX(cmzy1N>&rz|roEkl5KGv;8fWe~V*(BGVbS~8q0=vQE{y?JJX;ntq+O04dVEI9Yq@&&gw8=>p7 zAap5{P15IL^8?8M2_R^x?whfF)bWW_K`nnLMTq~Vpomkq3aKO;d=13wZURm*#gLz_fD0XqOaCv0=0 zK->@6X%b*;T_b@VfWLHzlM!$%Jsddx@EL*QpBzs^`V@YotNR_#U`U^8Ii%%pVL{j) zYF?~(^!dVT8V=Stap&<5rx3)|K&B_AH!oIrMM22$=u0Bb)zodx{KSlilVcr!`~t$c zLVw0SjRCD-TA?G4`8TDzM!AMRP(gvJNXT5klixR{?s@%@CItr`^O-D$FDnBS~=6|)Y-6NX8NEQ zX8Df{H)Yw)-@6vf59V9`Tb?k^$WM>a2sGnIs{e{+V+7u#?+{2qPtAs*%^AR_|Hug; z7_l}U@X2JF(bKk9#-%EJ_4Q2>atuPx!%5+x*yBKkiqK!T zw$zu+lEr`jmWR&LhCp#0OCxFd#->e#A(p*r@l32*VRDH+Q%<*N1mFtdDSn;bz+5 z2#?G}uKD;cG#KOXBbUQXMDlKfrM*%l=$@Vb{SCBn8-M3hEaoaXhpK^wx93}uAMe+jUIMz|H z;*}I*)~mk@9)<}VJJa)b8}BwdWVDodLr|Trz?hrFB6q-F82cf7Yw}fox+-M2bhjg> zez(-)qlY z7e@Q`MWA8%?LnZjXN8Q=Ti8=_lW2l3L0jP_A8rW!qG-_4(aRP7#uPv zgz;rjy_2+{mG0U1F!4jb5I>Ys=09#x7lswcwBG!`#YN-Kl;y&qi-Iuyi&W&yrGBK_45|PH)|se&0~nkacC4TICm;tM%89!mD)wR%@iJUZQu z0ugWObyz{^wiAztF)olj@JSvm?1ZX0D`TOTQIybiOt<~>jMo;@Yii)awu&NNB?p|~ zOOD1QMfn7WN2&|6td9438CoQ_qd*^Y68G1>++eu%jFU{aWtatX7ZvFn6#*c;iPCJT z_>puZwGiC^&^|nYsYh%s5a-B^G;F!U^Y6u4uH)MtqR;1xt|dD91c}b;z^sY=Mg&dg zy8XO(7m4s@7gJLZGV<_+Vd%kNmHU7Z@}LxIzF^N0Tas}V%Jz~D^#`3vw}?$NTshIt-KRx0Z~U%2@+kU98v zueRAEP#8~&2!_S;sTNZ8E?fC)c>BLN4(?8yh&8R_^Vj@Jo)0JJ478np_Q9`4%6@;L zBPWJwTn&_Bn0t?Ms`IXa0bn;b_T!<+1YiZN#~xPxgN5&V0cMGS0jq%ar4B-dD7T+2 zFq_5vKSUZ+m5c^WWJrpdJs$qzr*1}gVvJDlhDK@?%=4I0!O})K3rp(Xh*6YJVE5?O z#~iMoa@sJ=yF>MV!5uv9-TIjF`Uk+|_8#S&F^TZe&T8*<=Wp*NqP@ObUF#8jN6Lld zS5aHXo(#8DKZ3UU+L`TKkg}huE->Xot@Ic8%k%Wt3tv)yp?*xaR_f;`!u2Qq5A|Pn z{`xP8)Q{M+t<*m@QokNL9A01F2Sw}lKR46Y~1sA5W^!9XgTdRmY^`qT!F|B zYwibqLwF56+KcgLhP3Is{!9BH$zQqhB(d9)~boE6{e1$2;fRU`@ogN zUnm4OIM|ICHL}9B-V04c8(}pV+5VH!a^2QjegJre-jjhpK$|_9+Y7hg6v9A-g*UDWNxQ3ZCIU`v3TwHW560Ygj&H6Ro<6eiAPoiTEc5W=&$+uZH1g zgOg+oIKY6(7;xpsA~E2;?AStT6#3KoCb6K)uJ!HAf-a}l_c9iAB{Qj`2c?kseYRlYj(g4&Ohn|x(V~XQsJnH0JU#K$@MTK<7iw7E zG<01NsQzKqY;V^{ds`gFgt&?9)+jiMc_LdqoMzmE_>m{Fm#1RJUDPsmn|(3PP1{X` zHR7b^28GP&Y1j$`S2zl2Z6OJWb71r{QyTcSZ-V5~At)*yNvf!~{(;C$ub+r|$zEHs zQ{PMsudv9fy4C~u&j|^CC?40aVZ?t^xY#I0Ypi6MaAtA$9-9OVbvirjs|3gC>m;NK z0)w6VR{m;uv^WRzH^=+Zfz06R&iu`G--QGPv!1w3e{;H;c|3G=isAAXI+9}2)kRhQ zDof}B`5-o3U07vQg<_$JJMb1s-IlysvrFYgJbjCd3EbM z_b*dIovQpM8|~Gt^Y34#@E_i4Fw8(-Jn=m;uX_LfWlH#2&0F-Wd-Su9-fA%PA(!DR zzFOH}xC8`5-O2_73JW~0SP2PXp~KCzT9>wme+YVn)-kP?&hqZwV-tK9m$sWPT`7(7 zkWWJy1Sm0UWrMK*!7NkX2D#)ezY&xFlpAWD6td%**FCI|uOf@HGdQgs?@LY#(X(BW z)1t_&@=fAi{`^rgqG$;&4uP}=*@=zY`6e_i%?1>vi83sryy>))`}Ee46uAcj!IADD^QJrL(FVc#i76UlIOP zQJp%kj?{ta=d15YQJ+e>K$m2W&Z=|&hpm6&B-H8u1Qw=B{vcCf?uAiHX83%bc=>c< zRi2tI_R{PqRKlkIE%wrEig6}mZwAVI31aNjxqmhcF%dD9vR=njs`Y9I`7M_VxpN_A zU4WP>k~`mh*%@+YPfNM;3x(9A?+edv(x@|wOs?m4sY%yzTQ1 zI2w-jmz_c+&__Iau|sl8okasKmkj_<_U3pr;GHOTX2N~omTIYmVTX&ueWTc!TL%gD z?9@fX&Ug^(Nvk8<;<9IBVM+XwWA(GK3NL()Uc^C_=ZR|y?lk`9#e_g~`H3Nfej*Un zUFxunu;r^D$ds}C4v_;`4W=7uRC*r2;=Jhv{PeR_d#m{~i}=^iHW2o12b(f&5UCFNH#WM97s701DNG~gU|2= z;sae#L-P7PVn`md(U6c?VsMRP^mDNa)3a8?EW5ENmaOHwK8N28jwH|0Ri0Uu35YQ=tFjH&F<>EZJ^%w{e=e2) z$`$(E;Aj++vDk4?T+DUsz^p92q{;A4FHsmEv)njZ4R_?I^Hcx?=#Q_CvcL3<84^c$ zSatlhB@KpWOjaBr!8||$n(5d^PN?&KqbN>7zEQ_Z#8>C4Pc$A?zdMFm-Go_vls^$p zX+ElcXCUP_q@3V`Wr`b9JrkfonOF;%>c|S78cC~0S`E^+Agz`c&J#WClfPSsiSGIr zX&USJN}bXn5&IdhjM?iyVW`DqM5fj8J`n5?qp6nQ_)MQljOvGr33*%%0K3(r4~Qiu z#HAhJ7q`JKBh&%JQRwNhlqa`JG4}HIL7DLf96iY6t;<_Dn%KOBXW6gs7Rj+>V@6d zZhmF^Cc`r(Q}Gy8H0L^zG87&SQf%P!urVV_m_A1sa3tpB6Xk2j2j$b37sWN3lu`rCbbuSq+DtQ@{3hTs3zUGA{q?!0a6}cGx@$eb=gK`}Z*Ig*Z*TSz zC3J1%y(+oIW7A(9^k!bRW;~Pk2G9t7Oh1Vq4#4^UCp!Q4|J5+y=0~S=mJD4TKOHhm zK>ITR`6KosI~9|wiGTTjIls4=boTjuhN}h7dCqw6rKtN{=l3tOmMQg}6>)xN{v(V} zi6P~q&&vFpSOqrkZ0HZu`776BgqnG*l>}+4deTO~$Dn1lDEk&Q9&yt2;2S<``>hS?$@?yEhPy?@u;?V|8CY%devf)K~ zM{iQUqd3`w^g+yj#Ll#ROlybL8PB`pLxL8j^^eDccKl*`kP*+|Q$kN3wH`585a3_6 z%)iP0K>dAI(fiT*ccu+(fdFCOYYr=`s6QRYp9?AaI|-lyf!7>_3+iedsTUSMn`Jc2~0PF<3nOa+ubh z8RcrJ%V5Fw)L&5_6b7#88Nqu^70|Ncd&79I=Zv>}j`(M-3ILxz&g&{&+OoE}(7z^_!nCa&%C>eeg7cK)aSkcWTPMo|di0&Bz0UziOk zTopy*!$N-HVeCm{@`BMC>l!s`!~+!s%2^Hde-7vEz!V{vu5U8aZTqmvYSsK63rGWb z5sr%3PwTdFO0VVR3PGjf%(?@r`A+wcT+9nU_QQZ#t>v$r@yd_c^vZQey9H@feEvJI zf0<22S>qi!6lle4W?;YXFw<@ST2BSS)PFQz7i%(c`8kl$V8iG+fPC?-Xq%J__C_Og zTkPHP?CDy60KVWtNB;seBSy~(_u9%>Ax+Y-e`z`-_~yQxkvfsr~7 zW>KBbW<~1Ue2D6t=Ly&O{TX#?vd(Y*BkI&dode+)OrY0hjJw$13UuwEiRI+V^p?(A6%@|p8~VDlWC&Ld(A4lnpIYN(W}(lu2Ff*k+&So zk#1`^D5|_Bs>%-{*{+JpHWAsLF{|XyyF!LKv?f=*vAjv`)X)CZHPl{TB=hxAnX`~N zix3pH^L3G#jGlQglBHKvmZy;A65`pZ2NCxo*;lFU}WltjJbGpLxg${)8#fsXI4wBu^*`$u_XKzw-D&ZVg z9ZXowv|@TmEsf_PJHen|8;)l!l9*A(f|0j2(_8t6pbkUvz&P&!rEO5$GqlX86pc%3 z6!@D6ftMcLpgYl^-Xe!uEDZ9jv-^ifaZptEeDXC`_*}Nr1-wVy%zB%Y_f0E7m4Mrt}-$TWEQ3KZ(3vs4h2VTWU0!x4^78D!`IG+k&tW~D7 z7_$(WU$>3<^J0Y$xEmfGL=x`6{_^8PA%ppwtrL@J{yh{jice_bdTI;n_7b`ug^EL}n629p-p)1h)-o~_jMiSE#+e39q%-nECG7B<1>qV--0w)Wyu1rsS z^mcqTv!BI{34SjL=g+Q)vL_CD*6$aD4+w}~&9q@%nHEzCQ$D6mi)UI2h3zo1yZS#P zoMvA-oub1>W9uUsm#eaZFufl567k`xa7T09WngVl9WjHYbm=xSo&@# zarZssqhzK-pd$^6d`aMqGs$uUkT#)?Ca)}%);!@xoSOREsoVI-)GlF7tN2SF;u_+* zkH9Z}GYmHCNEy*D>$mg6l3y!{P5e*ACwjFeZ?JEYSF6vzjaBtcdKhb0w=T^fy7)Ko ziL?9S6R(coUVusY&(tGE{g93rhL;=%iT12RMN`m+pS^TB?DHxWB(1*U4k4V3r*Oa%ODLe>+P{aNr1wN@4j;ZGz<@-OILWqU~9M z8nw725w;(T5Z59ruv0C5y$w(zCs@a2L*6?fF@t_*20&Nw+#>GvB5|Mi%|N_2Gq6CW zSBQHZfg+Iq4Vk`Lru$_&?3$21MyBtO=_xY(piI9|rZ>v;qXVcuU4h%KIw5hFxDOQVGJSzePm$@s zA3^>KujrrEGTkrk^)i`0MyA6q1^t^M(+|q@3uStvO#i08{CDe-U*WL2_W%?W9K9DEV$H?>|nSQlQhx@8{tXlP56bj6#C@PqrjKDjk_jxZqPm&7LcbFd6Xa`2;@-No zpD4yI)8~r&K(b8t%Jg(Izf8}T>HoY-c7sfRN!$nWWcrbNMS77;-zx6ij&yXw`{ItG z0Zm9;V5W^m+C(!g55qTD++`La={9kbwE!uX$du(sIdu;z}T+U#ZkiJl+12Y8a56g7yM@V((_Jzh(12*#vvLJPmyi4($Q9lw(_>^hAlH$8rA$wfpXQP)7@|m|KPy)_ z;?SY|PIBtQdIjl+w$KU*L;WzbH z!z4PbW@cMTnbF4MZ@#54-lM0-c!GB&x%{8XC=n+>D${Cac7)B@?aLJLdRv^6ZwECV zYf+T?C2c^eYSiLwl2nyZgC->A$UVR$Rq?W+CaKyh*SJZl-j;iSNvcX@x=E^-OgBlD zQ>L4wDqg0Wq>9UqGD+1sxrdmfYN<>&NmY(aH%V1jnQoFQo+&1dNvhr!_hC|1Ak$4! z#bmlks=CT_lT>lHm}n-cS|{$qq^dxso1`j7rkkY7Dbr0-6))3GQdONH$~Q^X+u~j~ zNmYSNH%V2FOgBlDQ>L4wDqg0Wq-t+pQNBs4-WK<|NvcX@x=E^XWV%VJQf0bHs^Vq3 zNvig`MENGEdRyFwNmYqVH%V2FOgBkYs!TUYRlKWJQgtX@RAZ8=55#?#R6Q%xO;Yus zOgBl@%`)92Rh?wINvaOrDatoV)q`@qo21Gm?j@;`^k0&yFU8t-3sUu0apx7JYO1&s zq{=I91gTPG3X!VAf}jgh^`^KHq-v~8AyU;trVyz*Emo=^RpsJFkgA0;g-F$-GKEOh zpJfV>szjMWq^eP@OF^nC#El?Ti)9Lts;S~8OsYKMK1`~vlj$a@Ixd&1NvihA%-zRAJveo=H^7^BB>hXj1i=T-btCNh&3%P2%%% z6EF$Y82PSApfY4S2o!ent7W=LosP;yZBnNX<)SyKQ-w@7snaBxZc-rfGROZ#K{clCoq8#g`BN65| z5;N$4}1nl_wbT_as1MwoI9^N;j_FpJ_FzqLts?B=5IaUaH?jDk~Z zo^WTJd_-`C_MIiKx@|^y z0t6{`lu6y234Jn!bP#%gD3O#YkmAo?3hhd0q$wlIW?D>Ic3~k4w*r7?NG zKNYWtPqT@j0y@Q{=i6AEBiIpVFA;u_fC_OoPvZzM(cka zCV$oGR=?03s*Y27Vj(z%D!lF-6)co@5s^$9r1i;Dn^$y zrX5`CkH#oUJ;AnPBCd46SKR|$H`J?R`J%h=GNG})K$n~u+X_;12?+G8`H0w}VPgbL zMrLeN#lmux3^1l{VY*FSwg?NtQ{{GusrcN@z=osQCaNbj+jF!wc0-v_eh0OIx623_ zE_0L0lpzzVSiqPX4~FB1yC8qJUU+>})Wl;wXo)WAft{%%ykbOrVu-rik2zwjj)4j) z4+3QBcdZc4d}3n2!YUiP)ocH>K{-+|>VXQx&|11k$F}5ac-9G`8Ad?W3BbVTI-JS#|-{Mt1VToHn{C!wNd=C)+g_o^G8k|x!&3r z)-eB1?JM1myA|d)+E2a{e&5~A<#$~&Ex()ptEKmRjG~a*;v5Z%tTtnN{(j~+I!vy? zIw>J9q!o^(WWhhCt4AB}h-dzv;!zzLUQxe=8DOU_~-kG8N@0OOL6Swi{(;;nac|FnM*P60$PgMaw*au@h3wl|C1I7U<4Vrx&IT(p7g&d~@C4E}vtC2-itiFVZJd>wV+ zm)DB+;{3AS1t#ONxE81@w~stx@HzK_V~6uOO#Ck%4FjVvk^|sMi2sF?nodUgwQvgl zTPH=~FZY61PxH7*_c48rbkSHQy6S#eHLQ7J(@^yd65|XOi@#jgibLz2oiJzjtHt+r zQk42WfQ;AazzXAkFnzqw0q`GLjd+j)^TzAx0g3AH47)M!8hOSy+%!yKdg7bE06_B# z7R+oUmRrkgWP0M)hrqGNGhK&hlm$P6=#~XvrjjqXtP30u{y*B@Jie(a{R6&T0tH)c z5E7~)tr|3lO0{$>R48LvL->|;UXgii{rw~Fe8qrI5I#1 zA*DcD3T*)wkQrH2=Cpya6orDyeLvsl+$;s0ao*4S=8xp$EYEZHooL05{n@fQH^YIA%9gBQT+*Z`v(4*m(ABL!_T3fz4M|Aa=vl`dZ+*BptwMqKH# zCXz+|)Mv0c_?7Vv8P$_spkJUHz$n+!_RkulY`g$$@=dbjS_EAOpm*yDPD=3vGl3Lt zI>ZZeP`#1`Otb99sPcMIcATVjuU(9dp%IeqcZ9KxmRR7A7wmbhpk?DR42K(~wY0=B z%M^&AcaG(I=$w)7B=TK1XN=L81*9X7 zW_pv{vlg_79>m_O2 zmE}9v)1kVmgRU$$-_C-r^4tI@LSB!$UKk`;4l``NO%H}xsz zjGYBtjpEL)Y42A3Fum^_Ff&W_lLanqDM;A3+m!gB`Ll9WN{P8uH4|mKRqYy>L6U9- zE#mKE#wgtN2qcSkdCC;EXrE!!jk~6{s$JpmN?LY{l%AsAw(Yq@uZ6oFQH##N-E>Q< zIB zm@$fTz@Kmec(L}^*y#E9q>Z+yJFcgl-wR`eFJN4pmnr z(=78*l-CD+s}dEZdTqh*e2mj|-7;(cT!QA^eTAw-L|r1&Z~`_A=NU!XUbX40(9I-6Xp zu3MP$$Qg^m%NC40W0*`~nxzMUYY^2p(Zqeq8T^$e{5b3{8VT>+6xMkGBrJcpVYw0r zIaKGKV1Wl@kR`Iry+&Qazkt1j8_?_q@l3SXCl?nRFOvw=Zh+D(6;!HT96c7-Y^TF$ zb|FSeeDVOz7d+OAS#WSBcTI)CaERSZ4y4dD9-PGsvh-T-b-t!VuSKtAyw2N^G?>HP zH=?`3X&bM>Pm-Y>eCqFH;OD%BL_Ni^-ncTfu%N33qcjSgKMPlM$QuoXDB~pj3%XW8 z=I9qBbCg9gM>mtqk&R@IdO;NS3c6&}IfIYcJmST_pVXbfnOUxEJ)Gjo)}6sp8=C#g z>*Y?>e3YP)IP931IAYZai?oSe#~XvL#iHBV^Vq)bWZHb3V~&b%jnfL}*P#9}QLjii zdgX4K)fubw@o6QGI&**ZV9Bo_BJSp&czCt804taUT}M2@$Jem^#~}Baw2uWxg~T5} zya?eBaR~Qj#}G!sF@$M^kQS8ce^2g(H(W=n>8oA_UDY|@9V`y7$~05Mb+||+m@r06 zGaaD6$%f_COp!bKgwAP{4PmCwuA>Fom`Nai*9)aPnA$DPWR!7%CYi-uk9aiGpE8$6 zim#DX8AIh#+Lzls3ij;^S{UCiCLNO7KbfZAFC5LJAA8R|xDaZRnf1hkEFu`5R*xSd zttJsxK{X^^7t<`GP*Yq{>cqanR^2(^FYpcS?M0J1^L89tb%I@mbGc5md~r%|I+sG? z{^S_kC|R>K40ThGX{=Q6UsyhZkyKL<*E56IK5(^5VUh z@!^@GTO+0!sF{IKNj`yD0Wgv2bd%BDm`Jvi>cjuKm*#19FuT8=_~^9xI(qT>h3}9F>Wb$rC)kW@sB;L z>!R_Wr}UK+S)$YX%Dr%5@HSJWCD0C`?Wsthg*-6J4$|8>C)iFECqW0LDRtNmbH!?mf-_4yV zjqac`3wT3ZH5Ri7{!oGDj^I!DkN6WB zjY4ojh3fv7><41m%|9c1qy-5rp1eW1>OwsHp(Q?*)Ncy-Hy-U7Tm$BShBJet)e8pP zs4fDV^0aCmc$=#X#)B9nVT+lT^Ot^Q@$#6Ji%Bg_wz|PtrP4|OB zjC-tT;1Tgs)nAF?@+|SSrKpSCxQWsBNTl`+x~?c}|FJ1a`=;o-)b+cTpFQWBIW0jA zkO6Ps>`bMApH&xKpA6&7>)RssrPOsD3SiHx!J)oi%_cXBadoukDMovvSI^!w6T~a73B*T5kg*oL;(?_cEUNSC-0fe(l=b$dedq^nVp>I=AWtl zSFoj{Lh2&oZSj|Y#Hp?isTrsb)1FRpsPBi=_2jA@EC%?82WoZQkPGdT(&Li!_DS|g zlJ8lk0=)nSt4{VQ`s|@h*3@wJ&hm;fOJ8Ur1!GyQM7kwLs#W9B9!T+MW70j^lXj2x zY=4jDaK`nYYDec)8r604M8Z2>`Z`wE4N15-L()YV5--ls;i3#lMh1uPUd2FThMnT?f>caQW>v~wFBlP2&#wg)r?7M+O-oCNJ zx0)p3Xtz6h1&-m8PLzMG9ajkGQ{n(#M*lpvN#ewAJSm8;GfBK}#!=iLiatH1hbL3c z$B;8}XMm6EsBzqkd%~|^phW%F6mwQBOIeQz+8#AV@HGlJ@w%z0h$cO{&xbjQ(ZSL!jyAY z9{-t4IZx6lUg`E-NPMQ_nuMlDlN5#furm<90vmpCvu%}GQEoNJ36G)gU~ZPKoKDbL zSCWYpx9{JHAb){8OT_dkCXmQLz5Ue9@3s|yhzn+Jsf~%hW?+Qz+yI{hGILG+KsExO zWGxx&H25Tj1>oP_9@b$WYLAnHze4{(xOE!#7)IFHfag*!V&DA~@s`+kd&G^mOWJLv zuha%v!ctqh8rVzge~&mv3MmKNz6;4uXEDw4o0MgS`B{1oUqf%z9!#?ora<}4V=FZ5 z5@hxX>u%o#lRAGsKxvi{-C($uY?kvnkswPx4x;K(!m$T-$X`V;5Sn!@wP#MA0?Y7w zpnIfOi>$BL7X!7X2NBDZ+c?n*t z>WA10%4cLjw}`AHcaK%5lM&Rqr;C3QjeU>!x}TA=O*HodQmT4GKMeCurlqFCj&w_! zmE0ND#4^7d%lt>mT#a$&`^EM&sZUMJ@InvY;o%KXIl84Uu0(tI0WsYU;BpcW@5rnu zfkP!8N5yes0!1j#$GXzOz5+kSUhrXW7*?T8gy<>w+m2Cu=KE&-j!<}?AR9TS)Rw7uyI>JyitBpgO*I($N4Irbu86Mq4?WJo>B0r0<(ldE zm4y0+TvRcwCs1#C54jFRy&g}?mB^+t->HO)QEahAQPf?zToLc#zk%Y|M})#BQ5<=W zT32!BQbiPB7KLob#TdrNF#HA>JaHK2NDS9W4D%$0B49Z4?&TVBc?{>F-zK}MBQP|R zzMJf(UJ}DrIlER%4B!1?sUpe@426bsXmnF^r@5^di(p~}{9$V#Ehq>kEjoz>X$ChiPfG=ymV)VX|fybY5tq+{Yo5QH(3eB(Mnz-7rFk*PIUx6t-sE7uv*vZKU{^ z)7p&rJVj20mr^5p4_Th*e_iY>m+| z2GI%lM@I3#TphDcy89CU-=#mp|2O67XR0lY_y3)9dH>%L|KU)N>}UFAPMI>j1HF9> z?~=u)E8CSc_zmhf!-9Ow-pR2|kv%fKIJ!sv5B5r}w}H;q-apQwADVR!=h7DNfAEj9 z6SyyL??l>zASYmOW5`ZB)UK&>qGFoS^!^H^=UzUY{Dq?Af@n$kiP?up`7i0||0(@v z_#gj|<$uyYxrYZq4QN%(gY2!Uc^G+^o1%`bb@-m`uek99bf{gE=O9C_n>!?yIiP>J z@yeq_Z#N|8ySanB+Q~=R|{Y{nZ?wJL8+(Y)hPozYwu1KpWuMGVE&nimZ6DhM_#EzH6 zChx!=n9mYAus%alq?qQ#_FJ;|foarK^0Bcg82^_>{u}p|nEdFo_AR7z%@6XOeTSw5 zLbGo3@S$1IJLjLWzC|hGS@6vJK9j=ocEa2XEVo7t$|S*{4C+QQqZe0Z_wL=>l=cd} zhQF4I&dU`Mg0~SZ?cnrfidZYdwFs}0;n({uRm5vD{O)war^~|iVUi1qd>FW%#hIf< z7cp&>kSfAT2Z$a_JD~QNQR7tm zOUskX6!Cm2y-#{E-zElIqF%T;0P(R-tYLIZVL{h|i_I2)k_CQg4IT&9UL;lk<)^4v z!SRpKlNuz95Z4Bx=RO&Sy)Y_Sumy3!35|@q8kt6EEEs_7n;4-Im;3II4M77UdrMgZ z8Pw9IRZ4LK?zGK-K{XOK2%sVaFBn(=iH29dw}StHx&%VrF5>F0pd=JDHWh_&WB4 zU|=n*G2WM)SEu@+=m@7Jk4D+=>ArJ4@fMu9xH^FB0MUf{V@1p`Y$Mluc$Fx66LgZ9 zi+x)`?Caot*zh*?=I>AHREI#w`yd%32vTK&1TTDVe3?5gP0x_HQGF<&%UU25HW5@~ z6ombTF^caaR57`vs}Z>ouU_#)#+bNP8|r%AU#RB!WMy14jp{_4w0k@*G=M)%9 z#N>|Ca`^jQC-hdMm|?Z#xkT?2L`ikR+wgz%&Olj$q9lOBP8i5`*OXwOJV8+?k}?Ma zu&m+R0&#-`bzR^U_*r#UE}(#nPE^;0RA-fpVwz=wiO5F5*B4;wuiq{gl4g4MY?GA8 zIY8|1Df5bcYSab!Zb?;L8}uDDa2$B{2uEn6bt}((;^hrEJ;S5 zcT&PS*N_6a;$(2aX{1zVO;ASjIx(LBm5i_ipG2xZXV9?81bSoXD(slxe1k9cj9#sEuYx zPr!7!s#810E6+WlhwqIPx|wOFQ%O|lb8M!XdIuM;*lNZY=4Cu(j9AOmj@ z*KWhilvJMi^h_^UEM`0y=a!3A&w*|-J`m@j%@)T4`E1A(ufeGSv^iX`POtiJCm^nJ zrj3Ht7FL}<2}MP6FDN&(s^+x6^(j-PsQq9?$Tewtk5+X&1YRniN@IBO;WLME^7vi@ z8%dbfNsu;L#exO7j2D!P^vyV3ES1KLuOO!#uElbX;WH*}_!U)l0)$f&nL4PA1!uOf zyu+$*HWGNr5hh*Rkw2Fjk+Je z0)wWmRnMd`KG94@eaRllX)=)UXVA;|jW_8dJ-$CV}r4FJ_KWIPL$87c6F)<%5LfN^rsf@o@Ve?wX}M0fSmER{eO21b4c{q%*$TWue7%AUl+2z?!g_x0Os~nx&H>SAExu;kD@H z1h3eDmuJj4#@oF8pVd%in)2R~!|8Xg^);IW*_~K;Y`c+gmYZ22Ujq zhb|0`843XfzL|5zstfOd#issl9*u|Jr_In(Rwlu84tK zY4~!N`&or^#=Z%XQ*JOWhn-p|*Uc=^|r|Jt{ zFh?xzF$R_%?Z$L<@|x^@l5%+FN?e|or826^U`xT!LE}HkL?V$s-Q-zWzgfk616RFWu~9l?TUH*?Mu6O_x-81XWX3 zd8n*%W~9pFT4j~*e?QioZ?&^CxEo5OkH116-*Rc4kw@0~CA!KQ z-TX@k`^I*ggCc4bBC{NX8C=ik34>l}2Y(2OAG)W&KgnPJA4${7)w zRP8iFhhH(~^w+5H^Oj3G8Chh7zc9zmix12fRd@wO#8>#=Yho2XMqyVz)l8nfe@hT2 zGR8#iiK_o5yqWGvWZJbRg?1$?wj9lpajsn65KFo<%~Y#nk4oum9Ess8@CMCvR9w+n zQABALM7M`PxfVj3?aybu+)$9 zqs)EDpi7=ZV+P)@mqQTC+cWy6n1VOO!&3jRqIYLS3Fmk;)7BrU?KNl7_G@B5$J;VR zUO#O1rtasEc5S4SJ(}r7S!l^wV=P41e&m$0xvgB`qm#8k7kq73sV_i(+oPrVPc-SQ z+@Y@XCp6w*RUCZb+|4&w6?amteiYB&Or}}bS?ZSC>CDNBR6|tUh9RU$>ZrH_OzC-0 z4~Fy>pJ%8B7xQ_BYH%T+XQ&1@N)T}RFcLUl+yGT-KI@5E)c%TAE@=a z&Y*?)5w!ApHIQ)AlJ;n(SAHm0NW<9jI%OWznW~Y+9Vs+h4DrBR3>V$bF5G%TZ+ci_ zyGvplA+e1o0K?j2Yq%A*v_0tLD9#&X{#(wJ8(PUyB|6$hQh(0pr2d@C9kPw>>vI4j zMfG_C^#Pv~ezm@*X7B$F%^n-8NU1GT455mQ@2n_I({)`BjwBMq3OPQ%lLcR;f>UD! zaUD&&6=OyHC6%}x6~C38G%2daT^v>8E{rNwv!7~*(WS5dKtpAfs58DZ=A3L*`7J;? z9z+96DIJ3JDt_|YQ^qx+kaoVMv1@{_Mvv%A>7hAycT`Hwf(83Dp2SF@}<|#SR zbm$7yutvQ3S0WP;;f9n+Hi#2VWPbA|qh;bTy%_i2Rk%uY5*JW_?ra4Mn#u`^YlFH@ z!|aw4dUGm~A>`nVZ2vK01jI|g1zl^V1VSaIDbAp4jqf8AOJRJ%0`(<`lX49-3C(fA zkrz_uKM6urh_^5eS_DqpG)G>I8lc6Qm!)bCcUF|sPSu>YZ|YJCSe`Wk*FG{8?8@ge zU24%+cowESvJ?dDfo+qQl8+P9?4D&x_zL3R8?Lu;CG&7qil*9WgCoy{bz(SaHa60X z{JIllZCx8s0p~p%&vbyd~s-iwvKX>Z^3? zA*OYo=gCt`gG?J0GKS2Ml>G84%xb4?8q+MVbT3mpJjG~H@VKrALX@WZd*EfN??jg_ zY`LK8O&t({4pur5*?-`!UmCquVFc3haU;~8&s2-fU<53WT~nrnQ{{U5ul@P`V8}J# zTvz=|NiulUMg4iR6n2B0Bs$WE{&cAJZ3d5GeDVUdUki2BwWrmw(AcP+;!yjAVx2{= z*U*B*_JzTk`1yqgCA2S%ar+-iM{xUKXxyaQ>%-t4fjeYQorBh#R>xQV%ytY)iVZq! zzZPi8b3A#fy6`YOUR*NrO+8{G|N52jBmdG@aU*{%jJp~mKLjJ6+VP?VN7LY32Pr>Y zHAya_5Ao|%&8EAqlC!|27S)EkME0BiKK_ol@h4-I7mq)DGRLha8h>N#&B+U#YQLJu zI>FdqcAZ3rp6sAIetx;=s2dEspN)_P+*p{*w=F3;MtNW?Trx&3Yix|pnd8SOd@OE^ zo`t}iF-CvH7)`}CNz`EMkpVwF)=3GaJi1TPunmHAHHPWK$#Q#48*2nCuF28u@esDf zCwr7Z5Ig73J<61@1&_Em{`-F&&%XJw@!SD_J-i^go*QX@)S&dGuAi_b`waMHvHj7Z zn!C@5Y>?Oq&B^#nJ7lF?DW{Dsa+k41em>o#uHP9>SNnZBy(1kj;Z)i$i>qmaRM&^x z`Zl*-x!iH~d&dHYZmb+R96d_sFkS-M*hQP=y6&;z_^ld09OIA14M#I}c6}!cmXyLTYBjmO`>M8$X{S!HkEX^m{6de|JJul(2k-gFQ88!AVt ze-wF(j-5vbsK4Rv-Knl0W%M_#AJx7yx_t)Ker>WFuU7l*jC5lc+DoG+4Wz&AJC{4o zo|k8iJk*Rm^nZqsAK6TeWi|e1gOD}Ik8Gy{ruD~e+7P#!&Q&wpza5k_A zPjr*hBC~sRR}F#yB>i0-FBCr-}DqKeLjR61B= zi|Voy!Ti6KzIYP+?Ba6Bl74E)`Vi~(azl2Q$Q^RXmRu1(WPyK1hs@g}ez+E1(DkrM zUYzo>N>U^DVDGoZk+*{=Mwl0@65qTD>Rugg#Nxv*4Ff+-(z~<=&l@5=do)v*f5-0m zJAYULn#dJGM&Y9W(vhW#qheV^=m`2IdvVv-_r>n|-ac`6cyG_hd3(A0J!sIjFHcDM zXz;NiGxlY^x)%Y%nSTYyB zE>|2Iq&jI0yr{qXd(^akr|SwOTNj6s3yNhsVclkH9h-8!Ei*9_D7Pc2Z#5hE4Ia>D zM16oLet`8o95!u2v>U9MdUp03R(U=RZjvg+y)3Em!nOsYQiYFl*RTymL+?qYkJSkf+5*`!{mTu_h(xNhXs3cBFctaa}wI{hB9%DctwNnzco4evr)_C~X> zJ&mPS&*oO60-_g+!oQ%Klp;!P`EZX;FKf&6t7O;Q9L7L-A@E)FISrraK~ZV|Cu88G z8WuNvQs>#~<{Qv`$tp{(^|UJJ`T~M0;lm6=-99e+-+pA{w*^ zUhn%dK}(&fEo%ZfLPuslwG~G30*_`MZ%lpM{M5Fa=LT`#g=q<=?? zRSX4C-jIE0XMRsbxbZI#nl)bX4;n-+BKlSt#2j+h-kVAY);AnBeI%DjgHWjUd*m|F zl9M2hexe1{Z!l;%;-rG=A1GagMcsG~=SuwFGGiss1ccB-&LSuZ6+!hgb3f+r{Qw6*Y`)_`f&v>3`X%GIeMDg~Eon;R~NI|o7 zJ0s68J2tw^3S|y-%=dwRSCI}1^r8hxin7xcQp9h%v_$?pRePg2*zW%U@obkC-9eHc zuIv!8wq-9z)h=tYTXfo&>&3M_zSBJhM_02P2GbMv1MG@2XG>c*>1RP(MhstV5hBDj z|Dx^SHjfqvWq?>l(c~OlWb7c_YZ-6(z<}1r4tnc+IIv`z zAr^Ej8QUn0l9CcSz8aZk=_k>(lG9D`hej-yMQzz+Bc`Mi8?Z=$$%`VEcVA{n8Y3C1 z`4r`3oC25PHt_Ccfm#D^JB-&FeU#JK40)kt5HkWn0TzQY9WYm--nRF-4yqsSkXu#r z8zd0qP;WbkNKlB|fwM|*urp-FdibINO&DU2m;i~k9>ze{0hT!A$3Whf$q%SSI=bjw zw5n~b>clOmkyz&s>#F@Q(=6X6(v)-Z5SbE@{YQ+K=?%>~oJ;~So4gFdN)--VQTkxl z)-2~`Nep#$Z&*uxBH5VKZLfX{N3a{fr_+YR&$RDcqQ-_e)geNJ%c=Coi7*TRrn(6B z#(b(5UCX}J^A313*yP3vHxPwn*2);7iO4#6*=p1UhlqGxW?2`@l7}ps<;3q{)uLYf z>qXUr5vOLVKY?To3;1?zm{Z*R7FBSQ1mNLqqWnQ}@l~QS z&EhqR`>FV8ERn7;v4}2zwJ1*B0v>2SS=p!;o8U=Ux?Ss-9co&UPSqQjxLh&xUOU$} z>%J{_qq86dG2WJ2?X1G2RJKPmozRe2;>Bpj}Fc^Pc0ej3|J5dJT!oNIps^(B?t(x0l5O_d|gvC$RM>m2;M#W(#WK-Vk> zNI<1QEZ&XPR3{F+9M-cBvB{&8D>`9Pv1K#^Dr7cH@Z;Cx@cR5V8w*MBFy!J2DHwm}Ys- zfO2&ll=}=Q9U@R-Q*X&zu$NK=qlJxP=T+zFwLpMHP4HX&()}{BNp?1RV_qHYEm=RE zvyB998bmR2YL*0}pt~+Mfp2y5`QW(zG>|V1Al>SkbvGX}O)c8z;CpB<_cbM|{udQR z(QCaBFNxb=v71*KB@gaG$@x$U{b@9-jm)cM=F8WKX_nXYa-|6-T4MNM|3_Ia=XoqP z(p^3S@Q9yNizkfCH~yzuL?AzGWIk6*?SuD&OWOzkgnBuh5{=kAch}Nbn85Po4dNsG z<@aTgoRb?b34G=--#PO$qc^~E(?+~G)uP&)E7f&1Y=84#D^IKDw1*PQ6t!RF^i)Zgs(dQR%|kHLaDXKpXmzOOWhqd@*DS|n zHK;}6_F6gvbD9#$6o>D}ByTa~?~ICeuWgRpS*uv!kR0leYX8EcnQ~uUrfkf_m>3%# zZcb=Nt2*(3`0Jg7svDTfyg}5}PzS6u;BKyoO~$*7OYtQLzS&(SZ%pwBu=^1L_nqjV zkTEN(XjX!Gqt|*LiB%QWw>+B3Szksz6y=^5x#FqzFGS*<*qcl}_LSkTl=;3WoA}}v zl;=&n~_bW`jM>8^oQ}n8Ed8wieb40$-{AZX|+W$uP#OM|EtFddaJ@ zM>CD7qr=0YJ&*)DC7B}sb~@p*_t9URZo}p2mgm%lC3rMb_3ko7T#a0G-S%jvx9iFj z2Q2=Osgq3cV-|JrJ*Yfd7ygw;GmWn+Q^K%`G#I(5C~CboD-KZd?)HGz#wUJ=MD2lu zD4Jyw%{#k{KB5XU-r&lv70+c+-%LI)`{tUR=$qYQ@>e#PqBOUuok7i2RRi=a=_GqT&+DONW z=i{NgcM+6{@re^K8j)TFj(mw@6mZ~hkJJ~vY9lQXOB&=3c!Sun9lhEh(s)?+%}P!L zSs=e;Aeoq`7oSZ&uao(^F*%R?xCE;_$NS?FMZEtkuEAe0&GPm6a>Ys4QS4m@MalMN z-IaaP!T&kn4P4Ds|6xT@T>Lv1|B(%tXjd0KN5{_@55F(7fL9yOyhm*I*fZ~_VNfj) zg6Z}9GTr>2EKob^7mP0h_rb{rIj1ak;R4C{An4(lljp0q?R+i~N*D9Ndt-W4f!2RM z%R5;58NNEX^=ePvEPH8?;jTOB`hQD<{cc?1>P7xl7^6UltT1|P zlV}eTWAFV22D)UdrMoe){8i1m@18_8@Gsf}hU8v)^hD07b4H&(P(?d$X9L2ZD$Lub z^U=%!6LZx?P$Y0~{q+?2G2~qg%v2R@5xeh+ugydl&fpE=%r?4<= z&mnr0C3?F@TKIoPrvEcCk!{6`GyT@cG|b3E-ij{H^eZD%Z`6A7GN{K?+<+bPD^7RJ z$7MS1nDf%@puQ0kWX934jPT}#j8uVG z#{M$n%veTYWTcA4GF~Awu8d`b{sGU_I8D#fnuu3qGEb{&_a?c zOSwCKF25{WByN_uK^%*p{9<2TeD27+{9!9vxv1^p+$-DVe%gRtFLT2pYCG6Zx63`% z$h`u&CohB9!3rBD;X^^1gho0h;g7IpJbBqlWXVOAyJeOM5(Kh*F0-sfmNaC!N@jU5 zmSsKJL|z0ly-?G?#xvkO=zNr1=^5}IEb^9g@(g$nN`v01jL%0>9PtP7G+4;_a|ke( zA^aR~qe)^AepYS4RGBZ01BYVBZ&i!-sYQok>i}rqh~TIF&Y1R70Acbnynib!Xmjrc z)N|HYo2y{AhtIE}Hix|Z)uKbj7W&2kqeYEz51J^ADlDril4K>}la0Y5+>JlI0Ut1m zG=9{qdj`A*HOrE_JOkc?)LhB!jL(PTH!OoEBQW9+;|1|A1HelkHS1vyj*71rozgGu zYXejSO8du9v<1I0pgBH5Cyh?203$#oy+A!wCKEAn{?H9QGz1>ay*ET)UQ{#4E#maPVaswS1H^6<+r z$-&Y+T!`-uV3}D)8)fEi#@V$6WgO}{)nBXnOYn-#P~80RoO7MMW`C_WRb4k6b|U7S z>s->};Z<%;gC$Zo|E!>IwObE~6-S%(0xf_@rdh5wYO6h;ApUZtqGZ)@OaA+1UT;DR`L8Kzm5L+ln8(gyKGSMV#h zGrk{Z_u|@9L~x3%E7^jaXKZ2JG3Q=D8+W!`De1^G%UGjMoi{b> zMyCfBNdn44U@!6p@y$k5caJE#F^t<7cubH z12Mc_eEhxq9e?bULB8?MhMpm~0I&q~PceOCvkv*5I%wSlYH5z`1CyIKh|wEq`m8@w zt`zW{h}lkF0k#`Aucsy6e|;J4nU!R~uwI-v8o^hx5_)qIpD=ACdm8t^T(_o$`Wbd} z#Os7;DI$z!UjxvA5M*^NMQ1QFL_~EO@HZa?zqnqM)#De#srnDf!`>}%74RR$vWn)2 zJh3DZeZ2?lWoak{E;``JL$8iB`w)0Xyg@uvLCsDlv@{|1(B0DV*N?y&tP`{9iK%=A zbwh*DVXl$ai#w0wv41ha9y1h^^Pq8}CrIeK3}mevuxr!fqfcCHsb^d>t7etQR*#ahJTqG|Os8Lh}Z3%Z6q>+|i>AJalx4B6|I;RTsfE zP(P)W28r>`Mq?5;H0uTYJ2$U~g-c_?J#19y>-AKjA>T%q;)pJhr3m+4ia7mVYh0~z zx+sdsj3O#|n`xG##;RJrzFGIp>Iwe-r^kuE|K)KK;V74N_NcCq@B$&;pP!OaMbjoc z=wJ^A_Omn>_*x`zf8q!_)fHlzK-xD_ydpB>ql`u=@T)_6NwK2q?*BWO`UC@Sxs z0C{&`Tf)=baqAxlT&iz<0#toWAsF2Oj@|~2QG^4GkQm#OZf_yU93nmvgvw-WO{+Sl z63U{1Z5l$qwNZ~|YT6iSfA&78kD@lR{fDFNf7^JxRFDk2 zWuyG-Q0@C^ri<&=VWYEe6IqE?2mtSDRmayLqE#J}w)XfE?C-Z6L@kG2C{x65T~844lILl#g~(@ zxyUY|uw1YxyYokkl436~+vMS=vJWx7%fp+=^}%a4$eN4vW6gT@Nfz|m$hrUo6~Hxw zp^|A(70SiKKP#Ln`RTHdoA235f(~^@@gCfvuJhP+-?^S@;NP_A>=A!EN{5HKuD@OU zy1K5^o{+td1rE)+$#{>tdGf~tW+az%7?9;rooz7Lnzz5S3AB~K_qaysRgMiX znE=K%-!K00JcJRXZn6ocv+0&Rqy({2NMLr7qGhf%GW;IGIWqh=g!{y8UABa znbP#5JOQppo>MYR`M;Lon-OmujTFB}#@~T>SgnR%9fV=EnrW815Pn;R??ISc>1dWg z2$NQ$W*LHTK;{|7mnq>=(CZO+ifNW&1b)jj%R>k}%rwgs1V9#l9D)16UqoOC(=5*; zFc5yo5CDNNh(KSaSr#L3J@guye}?@%__53(iKX57y)KTeh@!o8*$?85;MrKpQwP=zGU zBl35Q56#Lx$$07kHlUC9@$54!aA>xP1y0Vwo8`VRTol!d4nP8{M4IKpgG;DhJo!KY zPtFpLl1>2(7Ns6wJoR>Q^V8_m`?KI7kas`Gg2`4{v_GVt6w2qjyNgn?lydRZgW_yS zqzLrK54N$qhf>sq50jj!>>y+njmV~1jvl6-VZotU;_>&J_2E4A2eGy!th@E<;X&sQ zZJxXf>cYQY(20)ydxBjG2DBF**Gg?!u=0RoTz1%3)?z!py3iWmYB0 zZB-ym29_Fxz}w~hP$mwk=v?Fc3YMIb6b_?-B#rVw^do28os*VOU0KNUtRHaCBC}ht9yiS4Jkn|DS!X zyZ#1S?;CHj_qn<6Ew|p*FYER@vinC&PtgY~?-UphlTJ^i<}MENLSF^B3@hL*FeG-6 zoLfOq$)lP6&x>b_CDa%ZsnSgU_;iWls2Bz(q7bc;m#2qLhxIMjfhjo+W*O>5uO~23 z^kZA4(w$zh0tv_;6^$fo5Mvq6#sZ{jFUfeJ-`*pr`7}KI9oNE>m5!-dNa% z5|wYpBXHfp^QSu0e*Nc3OCZ_%*nlOV+t2d4vTGyy_@p0FFgdxCn}=9Z$X8mKtat~z z9}P`It$UJQ$jjFUfi zGku%eS7~N>gtK&MRH>?}fYj*5WvUAcu*RWq^ORj(m<;b2b}vL1#)D(<7@dVF|kT)cm=yro9H=>Y)#g_iCx?DDom7VmT}`XKHMC0~+`5sXF}_5yi=BdBmk zvLl$E%=p}LSO5;@n;CaxW!Jic`RTA6=ngW>vE+HM8wiC1huSsYPO6cx9jK12rBp<- ztVnvUV}QHA_e$6jq|``!KBMb6oOL*YEX5tnXO01Gr}t`@5Oh@Mr@#EYzNv_VwE z-xxLQK1$Z`+ei&}CXH9ub!5J(#07)(@RTXlN#lQsf8lWmPN85Sf=^J;h2V4w-i4r- zg8dL2PeI$9^BK=v?a@rXt1DMFcBEswPOMplt439auxUXzX@7gpy^0zbL$cvJ8UMu1 z>!(yFU9X5w-@-Dg7hCq=mxPhLkW4DI6~aiNW8y;-syv#hZyksbC?;0E)vSjPLLLEe zMxLfcZ-K_ueS}r%Gs2471FV-_=5yJ|pY;I^b;k&+a%zNCIW)qmG>)(;$46L|btA0G z4ajok5oA3FfEcd>9cgYCQJ@qs!H6wl&hC z;wrVz446>NhY7_6FrnyF`z)R+f6I&I?+PY=SLMpzHFo*CAzjyXNV5(s?7LK9lee+o zv_b3$R_x&$rd2ijGr-(yRg3)@Dp{P*yaVXz zG7N=Dads@lFGz;|ybQyQlQ=v!45?Fp#vItE@Y@zA8?a%%jgUa)o&sc%E{bh2O8-GZ zVhAsl;c{RI%CH&nGi7)M;-8FQny)U3w<@MBj*j1kwf|&&qHT445bi`fYxrMJqF4Bmsz4W;8}aFaQKZ{}MeVkc9wZmf@yIRk)PwB-}bSAs4N3iD}XP{fDug@f{-i_eI|xUApZc6dt~@4gzu2y6A0fZ z!*FRQt~L;PGA0H6HaMLFL{G+4`7=%a%mDBPadI?u1$@PcqcWU|@Fz0d9pPFT?uqb6 zqh)tFGxCFeo6Q(~X9fdQXGWp?DF*Oru~-(o1qJ;w+#lf?GJH3}kIAqT;Yk3lnoBe6 zLBGu-S4?R}W~*9Unvq4{xmYN=xN|hrbXr6|`fU?8(eDwFLBB%ukU&Qg2y_38R<+oh z0cYUe3^RSF1I}6T&8V=>4+w#uHgOa`E#h417K;*{4H<}qo#h_g)o+`WOmnPQX2ky6s&-vygD_+20wv zJonR{Oc?WJdaf)ccV+X!&hiW}`)T_nKv^=QU1r2iOyx5pfN9r8QS9SEzb##6#5PSC z&5?}Q@PmFEE{WVvTQ|Xn^;9Zv91wV~aX)S6RK5ik=lnJyqveKf_S1$<<&Vhp12P?Z zH$jv8d{@5>#(0B%Ta8S|eoh@p+dtA_>y2V?LaSj|LN)I!;EJF3*Cl3vG)d<#85(o-EU`?NfQk=n#G!5kbEVf<4?%M**cn8i>+y zs9;9ObQ}*N zAOXWI({U6LG@N!+9(L-2ej6lHxN#_99ntxN^04TG;g;z*g{Zu7QgvNzgM<&pTV}w~ zL~tP%gkhG^IHd?KoppdqvL0AZ#&HM{5fDQo;{nkWDuDwk=(jpVfZUh&~HU!r=JzM%G_y{g!vk0znm>!VnI1CA{ zA?&rVGtO2lbeWC=lFH-0i*c6Yy3mG=lN(1R1{9|v##u(=NJMqYY{pKwurm%&47ALE zbCTf7YpdDc8AmO~S*GLcqSri)r_tW7@5RDB0>y-QHoF#~G-n@{scQC3l5eF|poJ1w%Vl+ED z7h?mLS?C}}NxI|#dm%UHmrVc8F!c{d5)+L|O)b2o@UVHuuxvOb{`%2_g=B zOk?h+)0#@s4Gbl7F_8k&;;$Qkf`^2_R)@!Z0-rnY~N<;bQ22}r?BAE zbQYYE=?P91?#V*!Gp$DLGh+jIH5f%VKgamz9)1+g(y&^+X`V-SOoK8;sgfS<%pTo? z{wz%}tM;?4>X@8O-Igk1i-#!uhj)NS42^0huc5xq6uwuQb+N_QtY@Ers0}Il6Z!OB zxhLfO@_VU9HUp%eY4D7N3FB1zIBof)#Cfh^iLw~9RigeGE=TKPwAH12dnN~T$Sr6O5T{p81tI|WRRnUm*dhscb__-b|J&M7eTp}rCdguKNC z0o`kI=bfE71=`sd$v!*4!`Lm}T?WY$NaCqQkRP~K#zT_oFup#8)2$sbSt*0*^Yk(> zm3Kys?ew1yUp}bq!f~Le<~^TTdNn+1k*R*}v}M6BVcw&5b>a7hUimb5@0sCL?J(G& zS-#yaE7Wrt%{eSQ#lu(ALQw6cwn7kQCqe%jD-EErbw{+SsZH1I1+!?kIJlH1^7Y%m zDB3M{;V<9G=5EIna*UrCrCk!e^K$h2k&e+0_yWmilRsygW$N~FB9Ldf_)*52#Ehko zhTBYaWBhv$Kg}xt)sgWQcakoiA4Yd>?=YH41GmG3srezS&Y^`QLBEIkFiw%Q4=R|{ zA{?^hU9#i|qhv8kPP%-_Z^~rJj#o38G#4xl*s1o2Ju;Uygq>=S*n+=N;y$KSmZa>1dOXB+Crg9zKf=%EXt6)tl57>4!($kA7Rkd^>x%lg_%e{%018aYJdo^kSMNwQ`A6 zDlw*N=F6DQZSDI6a(u%l%0AJ5M;TM8W}0Phy&Ug<${cQ=-hoOwLNr8ThY_z= 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ªx!T|IYZ_2 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

-
-
+
+
+
+
+
+
+
@@ -216,17 +221,6 @@
-
-
-
- -
-
-
-
-
-
-
diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index f54394a353..3286b06998 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -592,8 +592,7 @@ function loaded() { var elJSONEditor = document.getElementById("userdata-editor"); var elNewJSONEditor = document.getElementById('userdata-new-editor'); var elColorSections = document.querySelectorAll(".color-section"); - var elColorControl1 = document.getElementById("property-color-control1"); - var elColorControl2 = document.getElementById("property-color-control2"); + var elColorControlVariant2 = document.getElementById("property-color-control2"); var elColorRed = document.getElementById("property-color-red"); var elColorGreen = document.getElementById("property-color-green"); var elColorBlue = document.getElementById("property-color-blue"); @@ -977,7 +976,7 @@ function loaded() { elColorRed.value = properties.color.red; elColorGreen.value = properties.color.green; elColorBlue.value = properties.color.blue; - elColorControl1.style.backgroundColor = elColorControl2.style.backgroundColor = "rgb(" + properties.color.red + "," + properties.color.green + "," + properties.color.blue + ")"; + elColorControlVariant2.style.backgroundColor = "rgb(" + properties.color.red + "," + properties.color.green + "," + properties.color.blue + ")"; } if (properties.type == "Model") { @@ -1303,24 +1302,6 @@ function loaded() { elColorRed.addEventListener('change', colorChangeFunction); elColorGreen.addEventListener('change', colorChangeFunction); elColorBlue.addEventListener('change', colorChangeFunction); - colorPickers.push($('#property-color-control1').colpick({ - colorScheme: 'dark', - layout: 'hex', - color: '000000', - onShow: function(colpick) { - $('#property-color-control1').attr('active', 'true'); - }, - onHide: function(colpick) { - $('#property-color-control1').attr('active', 'false'); - }, - onSubmit: function(hsb, hex, rgb, el) { - $(el).css('background-color', '#' + hex); - $(el).colpickHide(); - emitColorPropertyUpdate('color', rgb.r, rgb.g, rgb.b); - // Keep the companion control in sync - elColorControl2.style.backgroundColor = "rgb(" + rgb.r + "," + rgb.g + "," + rgb.b + ")"; - } - })); colorPickers.push($('#property-color-control2').colpick({ colorScheme: 'dark', layout: 'hex', @@ -1335,9 +1316,6 @@ function loaded() { $(el).css('background-color', '#' + hex); $(el).colpickHide(); emitColorPropertyUpdate('color', rgb.r, rgb.g, rgb.b); - // Keep the companion control in sync - elColorControl1.style.backgroundColor = "rgb(" + rgb.r + "," + rgb.g + "," + rgb.b + ")"; - } })); From b7a959255d51b57d4d0e65878b8163c15bc2a9e9 Mon Sep 17 00:00:00 2001 From: LaShonda Hopper Date: Mon, 6 Nov 2017 19:57:41 -0500 Subject: [PATCH 190/329] [Case 7049] Remove basic color section from non-shape Properties tab. Changes Committed: modified: scripts/system/html/css/edit-style.css --- scripts/system/html/css/edit-style.css | 20 ++++++++++---------- scripts/system/html/entityProperties.html | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css index 6aacaa5333..aad42ca85c 100644 --- a/scripts/system/html/css/edit-style.css +++ b/scripts/system/html/css/edit-style.css @@ -1500,8 +1500,8 @@ input#reset-to-natural-dimensions { display: none; } /* items to hide */ -#properties-list.LightMenu .shape-group.shape-section.property.dropdown, -#properties-list.LightMenu color-section.color-control1 { +#properties-list.LightMenu #shape-list, +#properties-list.LightMenu #base-color-section { display: none } @@ -1536,8 +1536,8 @@ input#reset-to-natural-dimensions { display: none; } /* items to hide */ -#properties-list.ModelMenu .shape-group.shape-section.property.dropdown, -#properties-list.ModelMenu .color-section.color-control1 { +#properties-list.ModelMenu #shape-list, +#properties-list.ModelMenu #base-color-section { display: none } @@ -1572,8 +1572,8 @@ input#reset-to-natural-dimensions { display: none; } /* items to hide */ -#properties-list.ZoneMenu .shape-group.shape-section.property.dropdown, -#properties-list.ZoneMenu .color-section.color-control1 { +#properties-list.ZoneMenu #shape-list, +#properties-list.ZoneMenu #base-color-section { display: none } @@ -1608,8 +1608,8 @@ input#reset-to-natural-dimensions { display: none; } /* items to hide */ -#properties-list.WebMenu .shape-group.shape-section.property.dropdown, -#properties-list.WebMenu .color-section.color-control1 { +#properties-list.WebMenu #shape-list, +#properties-list.WebMenu #base-color-section { display: none; } @@ -1645,8 +1645,8 @@ input#reset-to-natural-dimensions { display: none; } /* items to hide */ -#properties-list.TextMenu .shape-group.shape-section.property.dropdown, -#properties-list.TextMenu .color-section.color-control1 { +#properties-list.TextMenu #shape-list, +#properties-list.TextMenu #base-color-section { display: none } diff --git a/scripts/system/html/entityProperties.html b/scripts/system/html/entityProperties.html index e95646e3fa..18c3e8960e 100644 --- a/scripts/system/html/entityProperties.html +++ b/scripts/system/html/entityProperties.html @@ -44,7 +44,7 @@
-
-
+ +
+ CollisionM
From 6c2e701023453a2ccd32f8acc043ac1f7633dca3 Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Fri, 1 Dec 2017 13:31:52 -0800 Subject: [PATCH 223/329] Improved CMakeLists.txt for QT deployment. Changed threshold from 0.999 to 0.9998 --- tools/auto-tester/CMakeLists.txt | 17 ++++++++++++++++- tools/auto-tester/src/Test.cpp | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/tools/auto-tester/CMakeLists.txt b/tools/auto-tester/CMakeLists.txt index 3b379bdf05..e5f2c1fb97 100644 --- a/tools/auto-tester/CMakeLists.txt +++ b/tools/auto-tester/CMakeLists.txt @@ -13,7 +13,7 @@ if (Qt5_POSITION_INDEPENDENT_CODE) SET(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() - # Qt includes +# Qt includes include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${Qt5Core_INCLUDE_DIRS}) include_directories(${Qt5Widgets_INCLUDE_DIRS}) @@ -40,3 +40,18 @@ add_custom_command(TARGET auto-tester POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ ) + +if (WIN32) + find_program(WINDEPLOYQT_COMMAND windeployqt PATHS ${QT_DIR}/bin NO_DEFAULT_PATH) + + if (NOT WINDEPLOYQT_COMMAND) + message(FATAL_ERROR "Could not find windeployqt at ${QT_DIR}/bin. windeployqt is required.") + endif () + + # add a post-build command to call windeployqt to copy Qt plugins + add_custom_command( + TARGET ${TARGET_NAME} + POST_BUILD + COMMAND CMD /C "SET PATH=%PATH%;${QT_DIR}/bin && ${WINDEPLOYQT_COMMAND} ${EXTRA_DEPLOY_OPTIONS} $<$,$,$>:--release> \"$\"" + ) +endif () \ No newline at end of file diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 8922e08b1a..2a00f110c3 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -24,7 +24,7 @@ Test::Test() { bool Test::compareImageLists(QStringList expectedImages, QStringList resultImages) { // Loop over both lists and compare each pair of images // Quit loop if user has aborted due to a failed test. - const double THRESHOLD{ 0.999 }; + const double THRESHOLD{ 0.9998 }; bool success{ true }; bool keepOn{ true }; for (int i = 0; keepOn && i < expectedImages.length(); ++i) { From d271f619870163045927ea4d7b8298a9fddd96ed Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Fri, 1 Dec 2017 14:37:59 -0700 Subject: [PATCH 224/329] Proper fix --- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 40 ++++++++++++++------- libraries/ui/src/ui/OffscreenQmlSurface.h | 5 +++ 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index 5bcf06ce82..b3ebf30a94 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -121,23 +121,18 @@ uint64_t uvec2ToUint64(const uvec2& v) { class AudioHandler : public QObject, QRunnable { Q_OBJECT public: - AudioHandler(QSharedPointer surface, const QString& deviceName, int runDelayMs = 0, QObject* parent = nullptr) : QObject(parent) { + AudioHandler(QSharedPointer surface, const QString& deviceName, QObject* parent = nullptr) : QObject(parent) { _newTargetDevice = deviceName; - _runDelayMs = runDelayMs; _surface = surface; setAutoDelete(true); - QThreadPool::globalInstance()->start(this); + if (deviceName.size() > 0) { + QThreadPool::globalInstance()->start(this); + } } virtual ~AudioHandler() { qDebug() << "Audio Handler Destroyed"; } void run() override { - if (_newTargetDevice.isEmpty()) { - return; - } - if (_runDelayMs > 0) { - QThread::msleep(_runDelayMs); - } if (!_surface.isNull() && _surface->getRootItem() && !_surface->getCleaned()) { for (auto player : _surface->getRootItem()->findChildren()) { auto mediaState = player->state(); @@ -602,6 +597,7 @@ OffscreenQmlSurface::OffscreenQmlSurface() { OffscreenQmlSurface::~OffscreenQmlSurface() { QObject::disconnect(&_updateTimer); + disconnectAudioOutputTimer(); QObject::disconnect(qApp); cleanup(); @@ -615,6 +611,15 @@ OffscreenQmlSurface::~OffscreenQmlSurface() { void OffscreenQmlSurface::onAboutToQuit() { _paused = true; QObject::disconnect(&_updateTimer); + disconnectAudioOutputTimer(); + +} + +void OffscreenQmlSurface::disconnectAudioOutputTimer() { + if (_audioOutputUpdateTimer.isActive()) { + _audioOutputUpdateTimer.stop(); + } + QObject::disconnect(&_audioOutputUpdateTimer); } void OffscreenQmlSurface::create() { @@ -673,6 +678,14 @@ void OffscreenQmlSurface::create() { } }); + // Setup the update of the QML media components with the current audio output device + QObject::connect(&_audioOutputUpdateTimer, &QTimer::timeout, this, [this]() { + new AudioHandler(sharedFromThis(), _currentAudioOutputDevice); + }); + int waitForAudioQmlMs = 200; + _audioOutputUpdateTimer.setInterval(waitForAudioQmlMs); + _audioOutputUpdateTimer.setSingleShot(true); + // When Quick says there is a need to render, we will not render immediately. Instead, // a timer with a small interval is used to get better performance. QObject::connect(&_updateTimer, &QTimer::timeout, this, &OffscreenQmlSurface::updateQuick); @@ -701,10 +714,11 @@ void OffscreenQmlSurface::forceQmlAudioOutputDeviceUpdate() { QMetaObject::invokeMethod(this, "forceQmlAudioOutputDeviceUpdate", Qt::QueuedConnection); } else { auto audioIO = DependencyManager::get(); - QString deviceName = audioIO->getActiveAudioDevice(QAudio::AudioOutput).deviceName(); - int waitForAudioQmlMs = 200; - // The audio device need to be change using oth - new AudioHandler(sharedFromThis(), deviceName, waitForAudioQmlMs); + _currentAudioOutputDevice = audioIO->getActiveAudioDevice(QAudio::AudioOutput).deviceName(); + if (_audioOutputUpdateTimer.isActive()) { + _audioOutputUpdateTimer.stop(); + } + _audioOutputUpdateTimer.start(); } } diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.h b/libraries/ui/src/ui/OffscreenQmlSurface.h index 34da11c66c..4c23c62c12 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.h +++ b/libraries/ui/src/ui/OffscreenQmlSurface.h @@ -117,6 +117,7 @@ public slots: void changeAudioOutputDevice(const QString& deviceName, bool isHtmlUpdate = false); void forceHtmlAudioOutputDeviceUpdate(); void forceQmlAudioOutputDeviceUpdate(); + signals: void audioOutputDeviceChanged(const QString& deviceName); @@ -148,6 +149,7 @@ private: void render(); void cleanup(); QJsonObject getGLContextData(); + void disconnectAudioOutputTimer(); private slots: void updateQuick(); @@ -171,6 +173,9 @@ private: uint64_t _lastRenderTime { 0 }; uvec2 _size; + QTimer _audioOutputUpdateTimer; + QString _currentAudioOutputDevice; + // Texture management TextureAndFence _latestTextureAndFence { 0, 0 }; From fefedc11c80fde2fd181088a61bd41c0976029c6 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Fri, 1 Dec 2017 15:17:23 -0700 Subject: [PATCH 225/329] mac fix --- libraries/ui/src/ui/OffscreenQmlSurface.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/ui/src/ui/OffscreenQmlSurface.cpp b/libraries/ui/src/ui/OffscreenQmlSurface.cpp index b3ebf30a94..9a591018f5 100644 --- a/libraries/ui/src/ui/OffscreenQmlSurface.cpp +++ b/libraries/ui/src/ui/OffscreenQmlSurface.cpp @@ -173,7 +173,6 @@ public: private: QString _newTargetDevice; QSharedPointer _surface; - int _runDelayMs; }; class OffscreenTextures { From a1d90b5dd92d5b114ebad6301090f6b03ed05229 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Fri, 1 Dec 2017 15:41:13 -0800 Subject: [PATCH 226/329] added extra bit --- libraries/entities/src/EntityItem.cpp | 81 ++++++++++++++--------- libraries/entities/src/EntityItem.h | 1 + libraries/entities/src/SimulationFlags.h | 1 + libraries/physics/src/ObjectMotionState.h | 2 +- 4 files changed, 51 insertions(+), 34 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 4f2b290635..330e1fa854 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1832,39 +1832,8 @@ void EntityItem::computeCollisionGroupAndFinalMask(int16_t& group, int16_t& mask } } - if (userMask & USER_COLLISION_GROUP_MY_AVATAR) { - bool iAmHoldingThis = false; - // if this entity is a descendant of MyAvatar, don't collide with MyAvatar. This avoids the - // "bootstrapping" problem where you can shoot yourself across the room by grabbing something - // and holding it against your own avatar. - if (isChildOfMyAvatar()) { - iAmHoldingThis = true; - } - // also, don't bootstrap our own avatar with a hold action - QList holdActions = getActionsOfType(DYNAMIC_TYPE_HOLD); - QList::const_iterator i = holdActions.begin(); - while (i != holdActions.end()) { - EntityDynamicPointer action = *i; - if (action->isMine()) { - iAmHoldingThis = true; - break; - } - i++; - } - QList farGrabActions = getActionsOfType(DYNAMIC_TYPE_FAR_GRAB); - i = farGrabActions.begin(); - while (i != farGrabActions.end()) { - EntityDynamicPointer action = *i; - if (action->isMine()) { - iAmHoldingThis = true; - break; - } - i++; - } - - if (iAmHoldingThis) { - userMask &= ~USER_COLLISION_GROUP_MY_AVATAR; - } + if (_dirtyFlags & Simulation::DIRTY_IGNORE_MY_AVATAR) { + userMask &= ~USER_COLLISION_GROUP_MY_AVATAR; } mask = Physics::getDefaultCollisionMask(group) & (int16_t)(userMask); } @@ -1960,6 +1929,17 @@ bool EntityItem::addActionInternal(EntitySimulationPointer simulation, EntityDyn _allActionsDataCache = newDataCache; _dirtyFlags |= Simulation::DIRTY_PHYSICS_ACTIVATION; _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; // may need to not collide with own avatar + + auto actionType = action->getType(); + if (actionType == DYNAMIC_TYPE_HOLD || actionType == DYNAMIC_TYPE_FAR_GRAB) { + _dirtyFlags |= Simulation::DIRTY_IGNORE_MY_AVATAR; + forEachDescendant([&](SpatiallyNestablePointer child) { + if (child->getNestableType() == NestableType::Entity) { + EntityItemPointer entity = std::static_pointer_cast(child); + entity->markDirtyFlags(Simulation::DIRTY_IGNORE_MY_AVATAR); + } + }); + } } else { qCDebug(entities) << "EntityItem::addActionInternal -- serializeActions failed"; } @@ -2000,6 +1980,32 @@ bool EntityItem::removeAction(EntitySimulationPointer simulation, const QUuid& a return success; } +bool EntityItem::stillHasGrabActions() { + bool stillHasGrabAction = false; + QList holdActions = getActionsOfType(DYNAMIC_TYPE_HOLD); + QList::const_iterator i = holdActions.begin(); + while (i != holdActions.end()) { + EntityDynamicPointer action = *i; + if (action->isMine()) { + stillHasGrabAction = true; + break; + } + i++; + } + QList farGrabActions = getActionsOfType(DYNAMIC_TYPE_FAR_GRAB); + i = farGrabActions.begin(); + while (i != farGrabActions.end()) { + EntityDynamicPointer action = *i; + if (action->isMine()) { + stillHasGrabAction = true; + break; + } + i++; + } + + return stillHasGrabAction; +} + bool EntityItem::removeActionInternal(const QUuid& actionID, EntitySimulationPointer simulation) { _previouslyDeletedActions.insert(actionID, usecTimestampNow()); if (_objectActions.contains(actionID)) { @@ -2023,6 +2029,15 @@ bool EntityItem::removeActionInternal(const QUuid& actionID, EntitySimulationPoi serializeActions(success, _allActionsDataCache); _dirtyFlags |= Simulation::DIRTY_PHYSICS_ACTIVATION; _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; // may need to not collide with own avatar + if (stillHasGrabActions()) { + _dirtyFlags |= Simulation::DIRTY_IGNORE_MY_AVATAR; + forEachDescendant([&](SpatiallyNestablePointer child) { + if (child->getNestableType() == NestableType::Entity) { + EntityItemPointer entity = std::static_pointer_cast(child); + entity->markDirtyFlags(Simulation::DIRTY_IGNORE_MY_AVATAR); + } + }); + } setDynamicDataNeedsTransmit(true); return success; } diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 882b8e6812..ab6df1ab33 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -437,6 +437,7 @@ public: // if this entity is client-only, which avatar is it associated with? QUuid getOwningAvatarID() const { return _owningAvatarID; } void setOwningAvatarID(const QUuid& owningAvatarID) { _owningAvatarID = owningAvatarID; } + bool stillHasGrabActions(); virtual bool wantsHandControllerPointerEvents() const { return false; } virtual bool wantsKeyboardFocus() const { return false; } diff --git a/libraries/entities/src/SimulationFlags.h b/libraries/entities/src/SimulationFlags.h index e2b2224b4a..aeee1ae01b 100644 --- a/libraries/entities/src/SimulationFlags.h +++ b/libraries/entities/src/SimulationFlags.h @@ -27,6 +27,7 @@ namespace Simulation { const uint32_t DIRTY_PHYSICS_ACTIVATION = 0x0800; // should activate object in physics engine const uint32_t DIRTY_SIMULATOR_ID = 0x1000; // the simulatorID has changed const uint32_t DIRTY_SIMULATION_OWNERSHIP_PRIORITY = 0x2000; // our own bid priority has changed + const uint32_t DIRTY_IGNORE_MY_AVATAR = 0x4000; const uint32_t DIRTY_TRANSFORM = DIRTY_POSITION | DIRTY_ROTATION; const uint32_t DIRTY_VELOCITIES = DIRTY_LINEAR_VELOCITY | DIRTY_ANGULAR_VELOCITY; diff --git a/libraries/physics/src/ObjectMotionState.h b/libraries/physics/src/ObjectMotionState.h index 0b91ede574..ae5496b076 100644 --- a/libraries/physics/src/ObjectMotionState.h +++ b/libraries/physics/src/ObjectMotionState.h @@ -47,7 +47,7 @@ enum MotionStateType { // The update flags trigger two varieties of updates: "hard" which require the body to be pulled // and re-added to the physics engine and "easy" which just updates the body properties. const uint32_t HARD_DIRTY_PHYSICS_FLAGS = (uint32_t)(Simulation::DIRTY_MOTION_TYPE | Simulation::DIRTY_SHAPE | - Simulation::DIRTY_COLLISION_GROUP); + Simulation::DIRTY_COLLISION_GROUP | Simulation::DIRTY_IGNORE_MY_AVATAR); const uint32_t EASY_DIRTY_PHYSICS_FLAGS = (uint32_t)(Simulation::DIRTY_TRANSFORM | Simulation::DIRTY_VELOCITIES | Simulation::DIRTY_MASS | Simulation::DIRTY_MATERIAL | Simulation::DIRTY_SIMULATOR_ID | Simulation::DIRTY_SIMULATION_OWNERSHIP_PRIORITY | From 1e6b5c0c75d269f37e10eada11c663210acdf72c Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Fri, 1 Dec 2017 17:09:00 -0800 Subject: [PATCH 227/329] make requested changes --- libraries/entities/src/EntityItem.cpp | 32 ++++++++++++--------- libraries/entities/src/EntityItem.h | 2 +- libraries/entities/src/SimulationFlags.h | 2 +- libraries/physics/src/EntityMotionState.cpp | 2 +- libraries/physics/src/ObjectMotionState.h | 2 +- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 330e1fa854..e764cfff90 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1832,7 +1832,7 @@ void EntityItem::computeCollisionGroupAndFinalMask(int16_t& group, int16_t& mask } } - if (_dirtyFlags & Simulation::DIRTY_IGNORE_MY_AVATAR) { + if (_dirtyFlags & Simulation::NO_BOOTSTRAPPING) { userMask &= ~USER_COLLISION_GROUP_MY_AVATAR; } mask = Physics::getDefaultCollisionMask(group) & (int16_t)(userMask); @@ -1932,11 +1932,11 @@ bool EntityItem::addActionInternal(EntitySimulationPointer simulation, EntityDyn auto actionType = action->getType(); if (actionType == DYNAMIC_TYPE_HOLD || actionType == DYNAMIC_TYPE_FAR_GRAB) { - _dirtyFlags |= Simulation::DIRTY_IGNORE_MY_AVATAR; + _dirtyFlags |= Simulation::NO_BOOTSTRAPPING; forEachDescendant([&](SpatiallyNestablePointer child) { if (child->getNestableType() == NestableType::Entity) { EntityItemPointer entity = std::static_pointer_cast(child); - entity->markDirtyFlags(Simulation::DIRTY_IGNORE_MY_AVATAR); + entity->markDirtyFlags(Simulation::NO_BOOTSTRAPPING | Simulation::DIRTY_COLLISION_GROUP); } }); } @@ -1980,15 +1980,13 @@ bool EntityItem::removeAction(EntitySimulationPointer simulation, const QUuid& a return success; } -bool EntityItem::stillHasGrabActions() { - bool stillHasGrabAction = false; +bool EntityItem::stillHasGrabActions() const { QList holdActions = getActionsOfType(DYNAMIC_TYPE_HOLD); QList::const_iterator i = holdActions.begin(); while (i != holdActions.end()) { EntityDynamicPointer action = *i; if (action->isMine()) { - stillHasGrabAction = true; - break; + return true; } i++; } @@ -1997,13 +1995,12 @@ bool EntityItem::stillHasGrabActions() { while (i != farGrabActions.end()) { EntityDynamicPointer action = *i; if (action->isMine()) { - stillHasGrabAction = true; - break; + return true; } i++; } - return stillHasGrabAction; + return false; } bool EntityItem::removeActionInternal(const QUuid& actionID, EntitySimulationPointer simulation) { @@ -2029,12 +2026,21 @@ bool EntityItem::removeActionInternal(const QUuid& actionID, EntitySimulationPoi serializeActions(success, _allActionsDataCache); _dirtyFlags |= Simulation::DIRTY_PHYSICS_ACTIVATION; _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; // may need to not collide with own avatar - if (stillHasGrabActions()) { - _dirtyFlags |= Simulation::DIRTY_IGNORE_MY_AVATAR; + if (stillHasGrabActions() && !(_dirtyFlags & Simulation::NO_BOOTSTRAPPING)) { + _dirtyFlags |= Simulation::NO_BOOTSTRAPPING; forEachDescendant([&](SpatiallyNestablePointer child) { if (child->getNestableType() == NestableType::Entity) { EntityItemPointer entity = std::static_pointer_cast(child); - entity->markDirtyFlags(Simulation::DIRTY_IGNORE_MY_AVATAR); + entity->markDirtyFlags(Simulation::NO_BOOTSTRAPPING | Simulation::DIRTY_COLLISION_GROUP); + } + }); + } else if (_dirtyFlags & Simulation::NO_BOOTSTRAPPING) { + _dirtyFlags &= ~Simulation::NO_BOOTSTRAPPING; + forEachDescendant([&](SpatiallyNestablePointer child) { + if (child->getNestableType() == NestableType::Entity) { + EntityItemPointer entity = std::static_pointer_cast(child); + entity->markDirtyFlags(Simulation::DIRTY_COLLISION_GROUP); + entity->clearDirtyFlags(Simulation::NO_BOOTSTRAPPING); } }); } diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index ab6df1ab33..4c7f37bd6a 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -437,7 +437,6 @@ public: // if this entity is client-only, which avatar is it associated with? QUuid getOwningAvatarID() const { return _owningAvatarID; } void setOwningAvatarID(const QUuid& owningAvatarID) { _owningAvatarID = owningAvatarID; } - bool stillHasGrabActions(); virtual bool wantsHandControllerPointerEvents() const { return false; } virtual bool wantsKeyboardFocus() const { return false; } @@ -471,6 +470,7 @@ protected: void setSimulated(bool simulated) { _simulated = simulated; } const QByteArray getDynamicDataInternal() const; + bool stillHasGrabActions() const; void setDynamicDataInternal(QByteArray dynamicData); virtual void dimensionsChanged() override; diff --git a/libraries/entities/src/SimulationFlags.h b/libraries/entities/src/SimulationFlags.h index aeee1ae01b..aaa92000e7 100644 --- a/libraries/entities/src/SimulationFlags.h +++ b/libraries/entities/src/SimulationFlags.h @@ -27,7 +27,7 @@ namespace Simulation { const uint32_t DIRTY_PHYSICS_ACTIVATION = 0x0800; // should activate object in physics engine const uint32_t DIRTY_SIMULATOR_ID = 0x1000; // the simulatorID has changed const uint32_t DIRTY_SIMULATION_OWNERSHIP_PRIORITY = 0x2000; // our own bid priority has changed - const uint32_t DIRTY_IGNORE_MY_AVATAR = 0x4000; + const uint32_t NO_BOOTSTRAPPING = 0x4000; const uint32_t DIRTY_TRANSFORM = DIRTY_POSITION | DIRTY_ROTATION; const uint32_t DIRTY_VELOCITIES = DIRTY_LINEAR_VELOCITY | DIRTY_ANGULAR_VELOCITY; diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index 8ebce9f811..7e8b431ceb 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -700,7 +700,7 @@ uint32_t EntityMotionState::getIncomingDirtyFlags() { void EntityMotionState::clearIncomingDirtyFlags() { assert(entityTreeIsLocked()); if (_body && _entity) { - _entity->clearDirtyFlags(); + _entity->clearDirtyFlags(DIRTY_PHYSICS_FLAGS); } } diff --git a/libraries/physics/src/ObjectMotionState.h b/libraries/physics/src/ObjectMotionState.h index ae5496b076..0b91ede574 100644 --- a/libraries/physics/src/ObjectMotionState.h +++ b/libraries/physics/src/ObjectMotionState.h @@ -47,7 +47,7 @@ enum MotionStateType { // The update flags trigger two varieties of updates: "hard" which require the body to be pulled // and re-added to the physics engine and "easy" which just updates the body properties. const uint32_t HARD_DIRTY_PHYSICS_FLAGS = (uint32_t)(Simulation::DIRTY_MOTION_TYPE | Simulation::DIRTY_SHAPE | - Simulation::DIRTY_COLLISION_GROUP | Simulation::DIRTY_IGNORE_MY_AVATAR); + Simulation::DIRTY_COLLISION_GROUP); const uint32_t EASY_DIRTY_PHYSICS_FLAGS = (uint32_t)(Simulation::DIRTY_TRANSFORM | Simulation::DIRTY_VELOCITIES | Simulation::DIRTY_MASS | Simulation::DIRTY_MATERIAL | Simulation::DIRTY_SIMULATOR_ID | Simulation::DIRTY_SIMULATION_OWNERSHIP_PRIORITY | From c35310c2fb78c02ea541664f3cb75cc8676c2b58 Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Fri, 1 Dec 2017 17:17:11 -0800 Subject: [PATCH 228/329] Deal with user canceling folder selection. --- tools/auto-tester/src/Test.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 2a00f110c3..0506045fc3 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -77,6 +77,10 @@ bool Test::compareImageLists(QStringList expectedImages, QStringList resultImage void Test::evaluateTests() { // Get list of JPEG images in folder, sorted by name QString pathToImageDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder containing the test images", ".", QFileDialog::ShowDirsOnly); + if (pathToImageDirectory == "") { + return; + } + QStringList sortedImageFilenames = createListOfAllJPEGimagesInDirectory(pathToImageDirectory); // Separate images into two lists. The first is the expected images, the second is the test results @@ -118,6 +122,9 @@ void Test::evaluateTests() { void Test::evaluateTestsRecursively() { // Select folder to start recursing from QString topLevelDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder that will contain the top level test script", ".", QFileDialog::ShowDirsOnly); + if (topLevelDirectory == "") { + return; + } bool success{ true }; QDirIterator it(topLevelDirectory.toStdString().c_str(), QDirIterator::Subdirectories); @@ -176,6 +183,9 @@ void Test::importTest(QTextStream& textStream, const QString& testPathname, int void Test::createRecursiveScript() { // Select folder to start recursing from QString topLevelDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder that will contain the top level test script", ".", QFileDialog::ShowDirsOnly); + if (topLevelDirectory == "") { + return; + } QFile allTestsFilename(topLevelDirectory + "/" + "allTests.js"); if (!allTestsFilename.open(QIODevice::WriteOnly | QIODevice::Text)) { @@ -312,6 +322,10 @@ void Test::createTest() { // Rename files sequentially, as ExpectedResult_1.jpeg, ExpectedResult_2.jpg and so on // Any existing expected result images will be deleted QString pathToImageDirectory = QFileDialog::getExistingDirectory(nullptr, "Please select folder containing the test images", ".", QFileDialog::ShowDirsOnly); + if (pathToImageDirectory == "") { + return; + } + QStringList sortedImageFilenames = createListOfAllJPEGimagesInDirectory(pathToImageDirectory); int i = 1; From 4030688e7a694af7fc2c2aed6433c582a3f9d436 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Sun, 3 Dec 2017 11:54:37 -0700 Subject: [PATCH 229/329] added record wav files --- interface/resources/qml/AudioScope.qml | 178 +++++++++++++++++--- interface/src/audio/AudioScope.cpp | 5 + interface/src/audio/AudioScope.h | 2 + interface/src/scripting/Audio.cpp | 26 +++ interface/src/scripting/Audio.h | 9 +- libraries/audio-client/src/AudioClient.cpp | 9 +- libraries/audio-client/src/AudioClient.h | 15 +- libraries/audio-client/src/AudioFileWav.cpp | 69 ++++++++ libraries/audio-client/src/AudioFileWav.h | 34 ++++ 9 files changed, 312 insertions(+), 35 deletions(-) create mode 100644 libraries/audio-client/src/AudioFileWav.cpp create mode 100644 libraries/audio-client/src/AudioFileWav.h diff --git a/interface/resources/qml/AudioScope.qml b/interface/resources/qml/AudioScope.qml index 6f78a2d820..1f67b3f090 100644 --- a/interface/resources/qml/AudioScope.qml +++ b/interface/resources/qml/AudioScope.qml @@ -7,6 +7,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html // + import QtQuick 2.5 import QtQuick.Controls 1.4 import "styles-uit" @@ -32,7 +33,7 @@ Item { property var _triggered: false property var _steps - property var _refreshMs: 10 + property var _refreshMs: 32 property var _framesPerSecond: AudioScope.getFramesPerSecond() property var _isFrameUnits: true @@ -46,9 +47,17 @@ Item { property int y: 0 } - property var _timeBeforeHold: 100; - property var _pressedTime: 0; - property var _isPressed: false; + property var _timeBeforeHold: 300 + property var _pressedTime: 0 + property var _isPressed: false + + property var _recOpacity : 0.0 + property var _recSign : 0.05 + + property var _outputLeftState: false + property var _outputRightState: false + + property var _wavFilePath: "" function isHolding() { return (_pressedTime > _timeBeforeHold); @@ -84,13 +93,29 @@ Item { _triggerOutputRightData = AudioScope.triggerOutputRight; } } + + function setRecordingLabelOpacity(opacity) { + _recOpacity = opacity; + recCircle.opacity = _recOpacity; + recText.opacity = _recOpacity; + } + + function updateRecordingLabel() { + _recOpacity += _recSign; + if (_recOpacity > 1.0 || _recOpacity < 0.0) { + _recOpacity = _recOpacity > 1.0 ? 1.0 : 0.0; + _recSign *= -1; + } + setRecordingLabelOpacity(_recOpacity); + } function pullFreshValues() { - if (!AudioScope.getPause()){ - if (AudioScope.getTriggered()) { - _triggered = true; - collectTriggerData(); - } else { + if (Audio.getRecording()) { + updateRecordingLabel(); + } + + if (!AudioScope.getPause()) { + if (!_triggered) { collectScopeData(); } } @@ -99,8 +124,49 @@ Item { } } - + function startRecording() { + _wavFilePath = (new Date()).toISOString(); // yyyy-mm-ddThh:mm:ss.sssZ + _wavFilePath = _wavFilePath.replace(/[\-:]|\.\d*Z$/g, "").replace("T", "-") + ".wav"; + // Using controller recording default directory + _wavFilePath = Recording.getDefaultRecordingSaveDirectory() + _wavFilePath; + if (!Audio.startRecording(_wavFilePath)) { + Messages.sendMessage("Hifi-Notifications", JSON.stringify({message:"Error creating: "+_wavFilePath})); + updateRecordingUI(false); + } + } + function stopRecording() { + Audio.stopRecording(); + setRecordingLabelOpacity(0.0); + Messages.sendMessage("Hifi-Notifications", JSON.stringify({message:"Saved: "+_wavFilePath})); + } + + function updateRecordingUI(isRecording) { + if (!isRecording) { + recordButton.text = "Record"; + recordButton.color = hifi.buttons.black; + outputLeftCh.checked = _outputLeftState; + outputRightCh.checked = _outputRightState; + } else { + recordButton.text = "Stop"; + recordButton.color = hifi.buttons.red; + _outputLeftState = outputLeftCh.checked; + _outputRightState = outputRightCh.checked; + outputLeftCh.checked = true; + outputRightCh.checked = true; + } + } + + function toggleRecording() { + if (Audio.getRecording()) { + updateRecordingUI(false); + stopRecording(); + } else { + updateRecordingUI(true); + startRecording(); + } + } + Timer { interval: _refreshMs; running: true; repeat: true onTriggered: pullFreshValues() @@ -306,7 +372,7 @@ Item { boxSize: 20 anchors.top: parent.top; anchors.left: parent.left; - anchors.topMargin: 20; + anchors.topMargin: 8; anchors.leftMargin: 20; checked: AudioScope.getVisible(); onCheckedChanged: { @@ -333,6 +399,7 @@ Item { AudioScope.setServerEcho(outputLeftCh.checked || outputRightCh.checked); } } + HifiControlsUit.Label { text: "Channels"; anchors.horizontalCenter: outputLeftCh.horizontalCenter; @@ -346,9 +413,9 @@ Item { text: "Input Mono" anchors.bottom: outputLeftCh.bottom; anchors.right: outputLeftCh.left; - anchors.rightMargin: 80; - checked: true; + anchors.rightMargin: 40; onCheckedChanged: { + AudioScope.setLocalEcho(checked); } } @@ -358,21 +425,38 @@ Item { text: "Output R" anchors.bottom: outputLeftCh.bottom; anchors.left: outputLeftCh.right; - anchors.leftMargin: 80; + anchors.leftMargin: 40; onCheckedChanged: { AudioScope.setServerEcho(outputLeftCh.checked || outputRightCh.checked); } } + HifiControlsUit.Button { + id: recordButton; + text: "Record"; + color: hifi.buttons.black; + colorScheme: hifi.colorSchemes.dark; + anchors.right: parent.right; + anchors.bottom: parent.bottom; + anchors.rightMargin: 30; + anchors.bottomMargin: 8; + width: 95; + height: 55; + onClicked: { + toggleRecording(); + } + } + HifiControlsUit.Button { id: pauseButton; color: hifi.buttons.black; colorScheme: hifi.colorSchemes.dark; - anchors.right: parent.right; + anchors.right: recordButton.left; anchors.bottom: parent.bottom; anchors.rightMargin: 30; anchors.bottomMargin: 8; - height: 26; + height: 55; + width: 95; text: " Pause "; onClicked: { AudioScope.togglePause(); @@ -391,8 +475,7 @@ Item { fiveFrames.checked = false; AudioScope.selectAudioScopeTwentyFrames(); _steps = 20; - _triggered = false; - AudioScope.setTriggered(false); + AudioScope.setPause(false); } } } @@ -432,8 +515,7 @@ Item { twentyFrames.checked = false; AudioScope.selectAudioScopeFiveFrames(); _steps = 5; - _triggered = false; - AudioScope.setTriggered(false); + AudioScope.setPause(false); } } } @@ -457,8 +539,7 @@ Item { fiveFrames.checked = false; AudioScope.selectAudioScopeFiftyFrames(); _steps = 50; - _triggered = false; - AudioScope.setTriggered(false); + AudioScope.setPause(false); } } } @@ -480,9 +561,9 @@ Item { labelTextOn: "On"; onCheckedChanged: { if (!checked) AudioScope.setPause(false); - _triggered = false; - AudioScope.setTriggered(false); + AudioScope.setPause(false); AudioScope.setAutoTrigger(checked); + AudioScope.setTriggerValues(_triggerValues.x, _triggerValues.y-root.height/2); } } @@ -493,21 +574,68 @@ Item { anchors.bottom: triggerSwitch.top; } + Rectangle { + id: recordIcon; + width:110; + height:40; + anchors.right: parent.right; + anchors.top: parent.top; + anchors.topMargin: 8; + color: "transparent" + + Text { + id: recText + text: "REC" + color: "red" + font.pixelSize: 30; + anchors.left: recCircle.right; + anchors.leftMargin: 10; + opacity: _recOpacity; + y: -8; + } + + Rectangle { + id: recCircle; + width: 25; + height: 25; + radius: width*0.5 + opacity: _recOpacity; + color: "red"; + } + } + Component.onCompleted: { _steps = AudioScope.getFramesPerScope(); AudioScope.setTriggerValues(_triggerValues.x, _triggerValues.y-root.height/2); activated.checked = true; + inputCh.checked = true; updateMeasureUnits(); } Component.onDestruction: { + if (Audio.getRecording()) { + stopRecording(); + } AudioScope.setVisible(false); } Connections { target: AudioScope onPauseChanged: { - pauseButton.text = AudioScope.getPause() ? "Continue" : " Pause "; + if (!AudioScope.getPause()) { + pauseButton.text = "Pause"; + pauseButton.color = hifi.buttons.black; + AudioScope.setTriggered(false); + _triggered = false; + } else { + pauseButton.text = "Continue"; + pauseButton.color = hifi.buttons.blue; + } + } + onTriggered: { + _triggered = true; + collectTriggerData(); + AudioScope.setPause(true); } } } diff --git a/interface/src/audio/AudioScope.cpp b/interface/src/audio/AudioScope.cpp index 44f25ae5a9..1a2e867d51 100644 --- a/interface/src/audio/AudioScope.cpp +++ b/interface/src/audio/AudioScope.cpp @@ -78,6 +78,10 @@ void AudioScope::selectAudioScopeFiftyFrames() { reallocateScope(50); } +void AudioScope::setLocalEcho(bool localEcho) { + DependencyManager::get()->setLocalEcho(localEcho); +} + void AudioScope::setServerEcho(bool serverEcho) { DependencyManager::get()->setServerEcho(serverEcho); } @@ -191,6 +195,7 @@ void AudioScope::storeTriggerValues() { _triggerOutputLeftData = _scopeOutputLeftData; _triggerOutputRightData = _scopeOutputRightData; _isTriggered = true; + emit triggered(); } void AudioScope::computeInputData() { diff --git a/interface/src/audio/AudioScope.h b/interface/src/audio/AudioScope.h index 33d88f8fe0..e99b8378e3 100644 --- a/interface/src/audio/AudioScope.h +++ b/interface/src/audio/AudioScope.h @@ -71,10 +71,12 @@ public slots: QVector getTriggerOutputLeft() { return _triggerOutputLeftData; }; QVector getTriggerOutputRight() { return _triggerOutputRightData; }; + void setLocalEcho(bool serverEcho); void setServerEcho(bool serverEcho); signals: void pauseChanged(); + void triggered(); protected: AudioScope(); diff --git a/interface/src/scripting/Audio.cpp b/interface/src/scripting/Audio.cpp index f9c1a95fb5..7ed5c2ead9 100644 --- a/interface/src/scripting/Audio.cpp +++ b/interface/src/scripting/Audio.cpp @@ -58,6 +58,32 @@ Audio::Audio() : _devices(_contextIsHMD) { enableNoiseReduction(enableNoiseReductionSetting.get()); } +void Audio::onOutputBufferReceived(const QByteArray outputBuffer) { + if (_isRecording) { + _audioFileWav.addRawAudioChunk((char*)outputBuffer.data(), outputBuffer.size()); + } +} + +bool Audio::startRecording(const QString& filepath) { + auto client = DependencyManager::get().data(); + if (!_audioFileWav.create(client->getOutputFormat(), filepath)) { + qDebug() << "Error creating audio file: "+filepath; + return false; + } + connect(client, &AudioClient::outputBufferReceived, this, &Audio::onOutputBufferReceived); + _isRecording = true; + return true; +} + +void Audio::stopRecording() { + auto client = DependencyManager::get().data(); + disconnect(client, &AudioClient::outputBufferReceived, this, 0); + if (_isRecording) { + _isRecording = false; + _audioFileWav.close(); + } +} + void Audio::setMuted(bool isMuted) { if (_isMuted != isMuted) { auto client = DependencyManager::get().data(); diff --git a/interface/src/scripting/Audio.h b/interface/src/scripting/Audio.h index abd2312cf0..7e10761970 100644 --- a/interface/src/scripting/Audio.h +++ b/interface/src/scripting/Audio.h @@ -16,6 +16,7 @@ #include "AudioDevices.h" #include "AudioEffectOptions.h" #include "SettingHandle.h" +#include "AudioFileWav.h" namespace scripting { @@ -55,6 +56,10 @@ public: Q_INVOKABLE void setReverb(bool enable); Q_INVOKABLE void setReverbOptions(const AudioEffectOptions* options); + Q_INVOKABLE bool startRecording(const QString& filename); + Q_INVOKABLE void stopRecording(); + Q_INVOKABLE bool getRecording() { return _isRecording; }; + signals: void nop(); void mutedChanged(bool isMuted); @@ -71,6 +76,7 @@ private slots: void onNoiseReductionChanged(); void onInputVolumeChanged(float volume); void onInputLoudnessChanged(float loudness); + void onOutputBufferReceived(const QByteArray outputBuffer); protected: // Audio must live on a separate thread from AudioClient to avoid deadlocks @@ -83,9 +89,10 @@ private: bool _isMuted { false }; bool _enableNoiseReduction { true }; // Match default value of AudioClient::_isNoiseGateEnabled. bool _contextIsHMD { false }; - + bool _isRecording { false }; AudioDevices* getDevices() { return &_devices; } AudioDevices _devices; + AudioFileWav _audioFileWav; }; }; diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 78475f5b68..96b96d2bb1 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -222,8 +222,7 @@ AudioClient::AudioClient() : // initialize wasapi; if getAvailableDevices is called from the CheckDevicesThread before this, it will crash getAvailableDevices(QAudio::AudioInput); getAvailableDevices(QAudio::AudioOutput); - - + // start a thread to detect any device changes _checkDevicesTimer = new QTimer(this); connect(_checkDevicesTimer, &QTimer::timeout, [this] { @@ -1845,11 +1844,9 @@ qint64 AudioClient::AudioOutputIODevice::readData(char * data, qint64 maxSize) { qCDebug(audiostream, "Read %d samples from buffer (%d available, %d requested)", networkSamplesPopped, _receivedAudioStream.getSamplesAvailable(), samplesRequested); AudioRingBuffer::ConstIterator lastPopOutput = _receivedAudioStream.getLastPopOutput(); lastPopOutput.readSamples(scratchBuffer, networkSamplesPopped); - for (int i = 0; i < networkSamplesPopped; i++) { mixBuffer[i] = convertToFloat(scratchBuffer[i]); } - samplesRequested = networkSamplesPopped; } @@ -1911,6 +1908,10 @@ qint64 AudioClient::AudioOutputIODevice::readData(char * data, qint64 maxSize) { bytesWritten = maxSize; } + // send output buffer for recording + QByteArray outputBuffer(reinterpret_cast(scratchBuffer), bytesWritten); + emit _audio->outputBufferReceived(outputBuffer); + int bytesAudioOutputUnplayed = _audio->_audioOutput->bufferSize() - _audio->_audioOutput->bytesFree(); float msecsAudioOutputUnplayed = bytesAudioOutputUnplayed / (float)_audio->_outputFormat.bytesForDuration(USECS_PER_MSEC); _audio->_stats.updateOutputMsUnplayed(msecsAudioOutputUnplayed); diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index 4dd7436251..eb9de29411 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -47,11 +47,13 @@ #include #include + #include #include #include "AudioIOStats.h" +#include "AudioFileWav.h" #ifdef _WIN32 #pragma warning( push ) @@ -67,7 +69,6 @@ class QAudioInput; class QAudioOutput; class QIODevice; - class Transform; class NLPacket; @@ -118,6 +119,8 @@ public: const MixedProcessedAudioStream& getReceivedAudioStream() const { return _receivedAudioStream; } MixedProcessedAudioStream& getReceivedAudioStream() { return _receivedAudioStream; } + const QAudioFormat& getOutputFormat() const { return _outputFormat; } + float getLastInputLoudness() const { return _lastInputLoudness; } // TODO: relative to noise floor? float getTimeSinceLastClip() const { return _timeSinceLastClip; } @@ -142,7 +145,7 @@ public: void setIsPlayingBackRecording(bool isPlayingBackRecording) { _isPlayingBackRecording = isPlayingBackRecording; } Q_INVOKABLE void setAvatarBoundingBoxParameters(glm::vec3 corner, glm::vec3 scale); - + bool outputLocalInjector(const AudioInjectorPointer& injector) override; QAudioDeviceInfo getActiveAudioDevice(QAudio::Mode mode) const; @@ -184,12 +187,13 @@ public slots: void toggleMute(); bool isMuted() { return _muted; } - virtual void setIsStereoInput(bool stereo) override; void setNoiseReduction(bool isNoiseGateEnabled); bool isNoiseReductionEnabled() const { return _isNoiseGateEnabled; } + bool getLocalEcho() { return _shouldEchoLocally; } + void setLocalEcho(bool localEcho) { _shouldEchoLocally = localEcho; } void toggleLocalEcho() { _shouldEchoLocally = !_shouldEchoLocally; } bool getServerEcho() { return _shouldEchoToServer; } @@ -242,6 +246,8 @@ signals: void muteEnvironmentRequested(glm::vec3 position, float radius); + void outputBufferReceived(const QByteArray _outputBuffer); + protected: AudioClient(); ~AudioClient(); @@ -357,9 +363,8 @@ private: int16_t _localScratchBuffer[AudioConstants::NETWORK_FRAME_SAMPLES_AMBISONIC]; float* _localOutputMixBuffer { NULL }; Mutex _localAudioMutex; - AudioLimiter _audioLimiter; - + // Adds Reverb void configureReverb(); void updateReverbOptions(); diff --git a/libraries/audio-client/src/AudioFileWav.cpp b/libraries/audio-client/src/AudioFileWav.cpp new file mode 100644 index 0000000000..613628883c --- /dev/null +++ b/libraries/audio-client/src/AudioFileWav.cpp @@ -0,0 +1,69 @@ +// +// AudioWavFile.h +// libraries/audio-client/src +// +// Created by Luis Cuenca on 12/1/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "AudioFileWav.h" + +bool AudioFileWav::create(const QAudioFormat& audioFormat, const QString& filepath) { + if (_file.isOpen()) { + _file.close(); + } + _file.setFileName(filepath); + if (!_file.open(QIODevice::WriteOnly)) { + return false; + } + addHeader(audioFormat); + return true; +} + +bool AudioFileWav::addRawAudioChunk(char* chunk, int size) { + if (_file.isOpen()) { + QDataStream stream(&_file); + stream.writeRawData(chunk, size); + return true; + } + return false; +} + +void AudioFileWav::close() { + QDataStream stream(&_file); + stream.setByteOrder(QDataStream::LittleEndian); + + // fill RIFF and size data on header + _file.seek(4); + stream << quint32(_file.size() - 8); + _file.seek(40); + stream << quint32(_file.size() - 44); + _file.close(); +} + +void AudioFileWav::addHeader(const QAudioFormat& audioFormat) { + QDataStream stream(&_file); + + stream.setByteOrder(QDataStream::LittleEndian); + + // RIFF + stream.writeRawData("RIFF", 4); + stream << quint32(0); + stream.writeRawData("WAVE", 4); + + // Format description PCM = 16 + stream.writeRawData("fmt ", 4); + stream << quint32(16); + stream << quint16(1); + stream << quint16(audioFormat.channelCount()); + stream << quint32(audioFormat.sampleRate()); + stream << quint32(audioFormat.sampleRate() * audioFormat.channelCount() * audioFormat.sampleSize() / 8); // bytes per second + stream << quint16(audioFormat.channelCount() * audioFormat.sampleSize() / 8); // block align + stream << quint16(audioFormat.sampleSize()); // bits Per Sample + // Init data chunck + stream.writeRawData("data", 4); + stream << quint32(0); +} diff --git a/libraries/audio-client/src/AudioFileWav.h b/libraries/audio-client/src/AudioFileWav.h new file mode 100644 index 0000000000..7e9c83a23b --- /dev/null +++ b/libraries/audio-client/src/AudioFileWav.h @@ -0,0 +1,34 @@ +// +// AudioWavFile.h +// libraries/audio-client/src +// +// Created by Luis Cuenca on 12/1/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_AudioFileWav_h +#define hifi_AudioFileWav_h + +#include +#include +#include +#include +#include + +class AudioFileWav : public QObject { + Q_OBJECT +public: + AudioFileWav() {} + bool create(const QAudioFormat& audioFormat, const QString& filepath); + bool addRawAudioChunk(char* chunk, int size); + void close(); + +private: + void addHeader(const QAudioFormat& audioFormat); + QFile _file; +}; + +#endif // hifi_AudioFileWav_h \ No newline at end of file From d60f0827966a9082ce19129b866edd35912690fd Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Sun, 3 Dec 2017 23:24:34 +0300 Subject: [PATCH 230/329] 9706 Editing Attachments Results In Attachments Window Scrolling To Top --- .../dialogs/content/AttachmentsContent.qml | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/content/AttachmentsContent.qml b/interface/resources/qml/hifi/dialogs/content/AttachmentsContent.qml index 5c9d6822c8..0e0786975e 100644 --- a/interface/resources/qml/hifi/dialogs/content/AttachmentsContent.qml +++ b/interface/resources/qml/hifi/dialogs/content/AttachmentsContent.qml @@ -26,6 +26,7 @@ Item { } Connections { + id: onAttachmentsChangedConnection target: MyAvatar onAttachmentsChanged: reload() } @@ -34,6 +35,12 @@ Item { reload() } + function setAttachmentsVariant(attachments) { + onAttachmentsChangedConnection.enabled = false; + MyAvatar.setAttachmentsVariant(attachments); + onAttachmentsChangedConnection.enabled = true; + } + Column { width: pane.width @@ -92,11 +99,15 @@ Item { attachments.splice(index, 1); listView.model.remove(index, 1); } - onUpdateAttachment: MyAvatar.setAttachmentsVariant(attachments); + onUpdateAttachment: { + setAttachmentsVariant(attachments); + } } } - onCountChanged: MyAvatar.setAttachmentsVariant(attachments); + onCountChanged: { + setAttachmentsVariant(attachments); + } /* // DEBUG @@ -220,7 +231,7 @@ Item { }; attachments.push(template); listView.model.append({}); - MyAvatar.setAttachmentsVariant(attachments); + setAttachmentsVariant(attachments); } } @@ -250,7 +261,7 @@ Item { id: cancelAction text: "Cancel" onTriggered: { - MyAvatar.setAttachmentsVariant(originalAttachments); + setAttachmentsVariant(originalAttachments); closeDialog(); } } @@ -263,7 +274,7 @@ Item { console.log("Attachment " + i + ": " + attachments[i]); } - MyAvatar.setAttachmentsVariant(attachments); + setAttachmentsVariant(attachments); closeDialog(); } } From 5261434b6a94b126ff4d34cba065409e3a32a8dd Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Mon, 4 Dec 2017 09:45:36 -0800 Subject: [PATCH 231/329] Further remove dependencies of marketplaces.js on edit.js --- scripts/system/marketplaces/marketplaces.js | 32 ++++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js index 646e5452df..2701af9937 100644 --- a/scripts/system/marketplaces/marketplaces.js +++ b/scripts/system/marketplaces/marketplaces.js @@ -14,6 +14,7 @@ (function () { // BEGIN LOCAL_SCOPE Script.include("../libraries/WebTablet.js"); + Script.include("../libraries/gridTool.js"); var METAVERSE_SERVER_URL = Account.metaverseServerURL; var MARKETPLACE_URL = METAVERSE_SERVER_URL + "/marketplace"; @@ -168,6 +169,33 @@ })); } + var grid = new Grid(); + function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { + // Adjust the position such that the bounding box (registration, dimenions, and orientation) lies behind the original + // position in the given direction. + var CORNERS = [ + { x: 0, y: 0, z: 0 }, + { x: 0, y: 0, z: 1 }, + { x: 0, y: 1, z: 0 }, + { x: 0, y: 1, z: 1 }, + { x: 1, y: 0, z: 0 }, + { x: 1, y: 0, z: 1 }, + { x: 1, y: 1, z: 0 }, + { x: 1, y: 1, z: 1 }, + ]; + + // Go through all corners and find least (most negative) distance in front of position. + var distance = 0; + for (var i = 0, length = CORNERS.length; i < length; i++) { + var cornerVector = + Vec3.multiplyQbyV(orientation, Vec3.multiplyVbyV(Vec3.subtract(CORNERS[i], registration), dimensions)); + var cornerDistance = Vec3.dot(cornerVector, direction); + distance = Math.min(cornerDistance, distance); + } + position = Vec3.sum(Vec3.multiply(distance, direction), position); + return position; + } + var HALF_TREE_SCALE = 16384; function getPositionToCreateEntity(extra) { var CREATE_DISTANCE = 2; @@ -256,10 +284,6 @@ } } } - - if (isActive) { - selectionManager.setSelections(pastedEntityIDs); - } } else { Window.notifyEditError("Can't import entities: entities would be out of bounds."); } From a1bf54ff005df24d296da280e4d2970e44c6cb5a Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Mon, 4 Dec 2017 11:16:41 -0800 Subject: [PATCH 232/329] fix issue of no_bootstrapping not being set correctly --- libraries/entities/src/EntityItem.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 6ab4b3ccbe..29b104b421 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1834,7 +1834,7 @@ void EntityItem::computeCollisionGroupAndFinalMask(int16_t& group, int16_t& mask } } - if (_dirtyFlags & Simulation::NO_BOOTSTRAPPING) { + if ((bool)(_dirtyFlags & Simulation::NO_BOOTSTRAPPING)) { userMask &= ~USER_COLLISION_GROUP_MY_AVATAR; } mask = Physics::getDefaultCollisionMask(group) & (int16_t)(userMask); @@ -2028,7 +2028,7 @@ bool EntityItem::removeActionInternal(const QUuid& actionID, EntitySimulationPoi serializeActions(success, _allActionsDataCache); _dirtyFlags |= Simulation::DIRTY_PHYSICS_ACTIVATION; _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; // may need to not collide with own avatar - if (stillHasGrabActions() && !(_dirtyFlags & Simulation::NO_BOOTSTRAPPING)) { + if (stillHasGrabActions()) { _dirtyFlags |= Simulation::NO_BOOTSTRAPPING; forEachDescendant([&](SpatiallyNestablePointer child) { if (child->getNestableType() == NestableType::Entity) { @@ -2036,7 +2036,7 @@ bool EntityItem::removeActionInternal(const QUuid& actionID, EntitySimulationPoi entity->markDirtyFlags(Simulation::NO_BOOTSTRAPPING | Simulation::DIRTY_COLLISION_GROUP); } }); - } else if (_dirtyFlags & Simulation::NO_BOOTSTRAPPING) { + } else if ((bool)(_dirtyFlags & Simulation::NO_BOOTSTRAPPING)) { _dirtyFlags &= ~Simulation::NO_BOOTSTRAPPING; forEachDescendant([&](SpatiallyNestablePointer child) { if (child->getNestableType() == NestableType::Entity) { From c67ff3b5d8450436dad40b8aefb0995ececee335 Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Tue, 5 Dec 2017 00:03:48 +0300 Subject: [PATCH 233/329] 10024 Wallet: TextField Focus Problems note: removed excessive MouseArea-s --- .../hifi/commerce/wallet/PassphraseModal.qml | 10 ------- .../commerce/wallet/PassphraseSelection.qml | 27 ------------------- 2 files changed, 37 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/wallet/PassphraseModal.qml b/interface/resources/qml/hifi/commerce/wallet/PassphraseModal.qml index d967a36b68..249645e76f 100644 --- a/interface/resources/qml/hifi/commerce/wallet/PassphraseModal.qml +++ b/interface/resources/qml/hifi/commerce/wallet/PassphraseModal.qml @@ -206,16 +206,6 @@ Item { root.isPasswordField = (focus && passphraseField.echoMode === TextInput.Password); } - MouseArea { - anchors.fill: parent; - - onClicked: { - root.keyboardRaised = true; - root.isPasswordField = (passphraseField.echoMode === TextInput.Password); - mouse.accepted = false; - } - } - onAccepted: { submitPassphraseInputButton.enabled = false; commerce.setPassphrase(passphraseField.text); diff --git a/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml b/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml index ffeedde8f0..166388afee 100644 --- a/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml +++ b/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml @@ -87,15 +87,6 @@ Item { } } - MouseArea { - anchors.fill: parent; - onPressed: { - var hidePassword = (currentPassphraseField.echoMode === TextInput.Password); - sendSignalToWallet({method: 'walletSetup_raiseKeyboard', isPasswordField: hidePassword}); - mouse.accepted = false; - } - } - onAccepted: { passphraseField.focus = true; } @@ -115,15 +106,6 @@ Item { activeFocusOnPress: true; activeFocusOnTab: true; - MouseArea { - anchors.fill: parent; - onPressed: { - var hidePassword = (passphraseField.echoMode === TextInput.Password); - sendSignalToWallet({method: 'walletSetup_raiseKeyboard', isPasswordField: hidePassword}); - mouse.accepted = false; - } - } - onFocusChanged: { if (focus) { var hidePassword = (passphraseField.echoMode === TextInput.Password); @@ -151,15 +133,6 @@ Item { activeFocusOnPress: true; activeFocusOnTab: true; - MouseArea { - anchors.fill: parent; - onPressed: { - var hidePassword = (passphraseFieldAgain.echoMode === TextInput.Password); - sendSignalToWallet({method: 'walletSetup_raiseKeyboard', isPasswordField: hidePassword}); - mouse.accepted = false; - } - } - onFocusChanged: { if (focus) { var hidePassword = (passphraseFieldAgain.echoMode === TextInput.Password); From 8a5904373b13915cfca294e119ef51ab07658270 Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Tue, 5 Dec 2017 00:04:46 +0300 Subject: [PATCH 234/329] remove 'collapse keyboard' hack as now there is dedicated 'collapse keyboard' button --- .../hifi/commerce/wallet/PassphraseModal.qml | 19 ------------------- .../qml/hifi/commerce/wallet/Wallet.qml | 19 ------------------- 2 files changed, 38 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/wallet/PassphraseModal.qml b/interface/resources/qml/hifi/commerce/wallet/PassphraseModal.qml index 249645e76f..582052c4c3 100644 --- a/interface/resources/qml/hifi/commerce/wallet/PassphraseModal.qml +++ b/interface/resources/qml/hifi/commerce/wallet/PassphraseModal.qml @@ -352,25 +352,6 @@ Item { right: parent.right; } - Image { - id: lowerKeyboardButton; - z: 999; - source: "images/lowerKeyboard.png"; - anchors.right: keyboard.right; - anchors.top: keyboard.showMirrorText ? keyboard.top : undefined; - anchors.bottom: keyboard.showMirrorText ? undefined : keyboard.bottom; - height: 50; - width: 60; - - MouseArea { - anchors.fill: parent; - - onClicked: { - root.keyboardRaised = false; - } - } - } - HifiControlsUit.Keyboard { id: keyboard; raised: HMD.mounted && root.keyboardRaised; diff --git a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml index 759d7a37eb..97fee72968 100644 --- a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml +++ b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml @@ -666,25 +666,6 @@ Rectangle { right: parent.right; } - Image { - id: lowerKeyboardButton; - z: 999; - source: "images/lowerKeyboard.png"; - anchors.right: keyboard.right; - anchors.top: keyboard.showMirrorText ? keyboard.top : undefined; - anchors.bottom: keyboard.showMirrorText ? undefined : keyboard.bottom; - height: 50; - width: 60; - - MouseArea { - anchors.fill: parent; - - onClicked: { - root.keyboardRaised = false; - } - } - } - HifiControlsUit.Keyboard { id: keyboard; raised: HMD.mounted && root.keyboardRaised; From f7328f05fb3c3fc5af3fc2ba11763af8d2e1840d Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Tue, 5 Dec 2017 00:51:42 +0300 Subject: [PATCH 235/329] remove keyboard-hiding logic as keyboard hides should be handled by focus change listener in 'onFocusObjectChanged' in the OffscreenQmlSurface --- .../qml/hifi/commerce/wallet/PassphraseSelection.qml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml b/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml index 166388afee..9ba066a9fd 100644 --- a/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml +++ b/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml @@ -82,8 +82,6 @@ Item { if (focus) { var hidePassword = (currentPassphraseField.echoMode === TextInput.Password); sendSignalToWallet({method: 'walletSetup_raiseKeyboard', isPasswordField: hidePassword}); - } else if (!passphraseFieldAgain.focus) { - sendSignalToWallet({method: 'walletSetup_lowerKeyboard', isPasswordField: false}); } } @@ -110,8 +108,6 @@ Item { if (focus) { var hidePassword = (passphraseField.echoMode === TextInput.Password); sendMessageToLightbox({method: 'walletSetup_raiseKeyboard', isPasswordField: hidePassword}); - } else if (!passphraseFieldAgain.focus) { - sendMessageToLightbox({method: 'walletSetup_lowerKeyboard', isPasswordField: false}); } } @@ -137,8 +133,6 @@ Item { if (focus) { var hidePassword = (passphraseFieldAgain.echoMode === TextInput.Password); sendMessageToLightbox({method: 'walletSetup_raiseKeyboard', isPasswordField: hidePassword}); - } else if (!passphraseField.focus) { - sendMessageToLightbox({method: 'walletSetup_lowerKeyboard', isPasswordField: false}); } } From eb8438a9e85246c2af14eeacf2ff8b9874cf4f62 Mon Sep 17 00:00:00 2001 From: LaShonda Hopper Date: Mon, 4 Dec 2017 18:25:51 -0500 Subject: [PATCH 236/329] [Case 7049] Addresses code review feedback. Changes Committed: modified: scripts/system/html/js/entityProperties.js --- scripts/system/html/js/entityProperties.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index 4475e010bb..0ab9f7a9cb 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -455,7 +455,7 @@ function saveJSONUserData(noUpdate) { savedJSONTimer = setTimeout(function() { $('#userdata-saved').hide(); - }, 1500); + }, EDITOR_TIMEOUT_DURATION); } function bindAllNonJSONEditorElements() { @@ -747,12 +747,12 @@ function loaded() { for (var i = 0; i < selections.length; i++) { ids.push(selections[i].id); - var curSelectedType = selections[i].properties.type; - if (types[curSelectedType] === undefined) { - types[curSelectedType] = 0; + var currentSelectedType = selections[i].properties.type; + if (types[currentSelectedType] === undefined) { + types[currentSelectedType] = 0; numTypes += 1; } - types[curSelectedType]++; + types[currentSelectedType]++; } var type = "Multiple"; @@ -1748,9 +1748,9 @@ function loaded() { span.textContent = options[selectedOption].firstChild.textContent; dt.appendChild(span); - var spanCaratDn = document.createElement("span"); - spanCaratDn.textContent = "5"; // caratDn - dt.appendChild(spanCaratDn); + var spanCaratDown = document.createElement("span"); + spanCaratDown.textContent = "5"; // caratDn + dt.appendChild(spanCaratDown); var dd = document.createElement("dd"); dl.appendChild(dd); From 390c59b45c57591ff87655b28ca5602836f4520a Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Mon, 4 Dec 2017 12:11:17 -0800 Subject: [PATCH 237/329] Change menu and minor fixes --- interface/resources/qml/AudioScope.qml | 6 +++- interface/src/Menu.cpp | 29 +------------------ .../developer/utilities/audio/audioScope.js | 13 +++++++-- 3 files changed, 16 insertions(+), 32 deletions(-) diff --git a/interface/resources/qml/AudioScope.qml b/interface/resources/qml/AudioScope.qml index 1f67b3f090..677567c5c2 100644 --- a/interface/resources/qml/AudioScope.qml +++ b/interface/resources/qml/AudioScope.qml @@ -376,7 +376,7 @@ Item { anchors.leftMargin: 20; checked: AudioScope.getVisible(); onCheckedChanged: { - AudioScope.setVisible(!AudioScope.getVisible()); + AudioScope.setVisible(checked); activelabel.text = AudioScope.getVisible() ? "On" : "Off" } } @@ -617,6 +617,10 @@ Item { stopRecording(); } AudioScope.setVisible(false); + AudioScope.setLocalEcho(false); + AudioScope.setServerEcho(false); + AudioScope.selectAudioScopeFiveFrames(); + console.log("Component Destroyed"); } Connections { diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 7292594b53..9bbb72357b 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -679,43 +679,16 @@ Menu::Menu() { }); auto audioIO = DependencyManager::get(); - addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoServerAudio, 0, false, - audioIO.data(), SLOT(toggleServerEcho())); - addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoLocalAudio, 0, false, - audioIO.data(), SLOT(toggleLocalEcho())); addActionToQMenuAndActionHash(audioDebugMenu, MenuOption::MuteEnvironment, 0, audioIO.data(), SLOT(sendMuteEnvironmentPacket())); - auto scope = DependencyManager::get(); - MenuWrapper* audioScopeMenu = audioDebugMenu->addMenu("Audio Scope"); - - action = addActionToQMenuAndActionHash(audioScopeMenu, MenuOption::AudioScope); + action = addActionToQMenuAndActionHash(audioDebugMenu, MenuOption::AudioScope); connect(action, &QAction::triggered, [] { auto scriptEngines = DependencyManager::get(); QUrl defaultScriptsLoc = PathUtils::defaultScriptsLocation(); defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/utilities/audio/audioScope.js"); scriptEngines->loadScript(defaultScriptsLoc.toString()); }); - - addCheckableActionToQMenuAndActionHash(audioScopeMenu, MenuOption::AudioScopePause, Qt::CTRL | Qt::SHIFT | Qt::Key_F2, false, - scope.data(), SLOT(togglePause())); - - addDisabledActionAndSeparator(audioScopeMenu, "Display Frames"); - { - QAction* fiveFrames = addCheckableActionToQMenuAndActionHash(audioScopeMenu, MenuOption::AudioScopeFiveFrames, - 0, true, scope.data(), SLOT(selectAudioScopeFiveFrames())); - - QAction* twentyFrames = addCheckableActionToQMenuAndActionHash(audioScopeMenu, MenuOption::AudioScopeTwentyFrames, - 0, false, scope.data(), SLOT(selectAudioScopeTwentyFrames())); - - QAction* fiftyFrames = addCheckableActionToQMenuAndActionHash(audioScopeMenu, MenuOption::AudioScopeFiftyFrames, - 0, false, scope.data(), SLOT(selectAudioScopeFiftyFrames())); - - QActionGroup* audioScopeFramesGroup = new QActionGroup(audioScopeMenu); - audioScopeFramesGroup->addAction(fiveFrames); - audioScopeFramesGroup->addAction(twentyFrames); - audioScopeFramesGroup->addAction(fiftyFrames); - } // Developer > Physics >>> MenuWrapper* physicsOptionsMenu = developerMenu->addMenu("Physics"); diff --git a/scripts/developer/utilities/audio/audioScope.js b/scripts/developer/utilities/audio/audioScope.js index 3331482fbd..00c9e4b725 100644 --- a/scripts/developer/utilities/audio/audioScope.js +++ b/scripts/developer/utilities/audio/audioScope.js @@ -1,10 +1,17 @@ var qml = Script.resourcesPath() + '/qml/AudioScope.qml'; -var viewdim = Controller.getViewportDimensions(); var window = new OverlayWindow({ title: 'Audio Scope', source: qml, width: 1200, height: 500 }); -//window.setPosition(0.1*viewdim, 0.2*viewdim); -window.closed.connect(function () { Script.stop(); }); \ No newline at end of file +window.closed.connect(function () { + if (Audio.getRecording()) { + Audio.stopRecording(); + } + AudioScope.setVisible(false); + AudioScope.setLocalEcho(false); + AudioScope.setServerEcho(false); + AudioScope.selectAudioScopeFiveFrames(); + Script.stop(); +}); \ No newline at end of file From d70a3685b8bdd570f116461a655da721e980fd00 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Mon, 4 Dec 2017 14:41:27 -0800 Subject: [PATCH 238/329] Clean up --- interface/resources/qml/AudioScope.qml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/interface/resources/qml/AudioScope.qml b/interface/resources/qml/AudioScope.qml index 677567c5c2..aea1473c3d 100644 --- a/interface/resources/qml/AudioScope.qml +++ b/interface/resources/qml/AudioScope.qml @@ -611,17 +611,6 @@ Item { inputCh.checked = true; updateMeasureUnits(); } - - Component.onDestruction: { - if (Audio.getRecording()) { - stopRecording(); - } - AudioScope.setVisible(false); - AudioScope.setLocalEcho(false); - AudioScope.setServerEcho(false); - AudioScope.selectAudioScopeFiveFrames(); - console.log("Component Destroyed"); - } Connections { target: AudioScope From 486cdf14d2a71824b079af5ba0b427787b373a91 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Mon, 4 Dec 2017 15:34:53 -0800 Subject: [PATCH 239/329] make sure that NO_BOOTSTRAPPING is disbaled correctly if parent is changed --- libraries/entities/src/EntityItem.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 29b104b421..82e364486b 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1605,6 +1605,25 @@ void EntityItem::setParentID(const QUuid& value) { if (tree && !oldParentID.isNull()) { tree->removeFromChildrenOfAvatars(getThisPointer()); } + + bool enableNoBootStrapping = false; + if (!value.isNull() && tree) { + EntityItemPointer entity = tree->findEntityByEntityItemID(value); + if (entity) { + enableNoBootStrapping = (bool)(entity->getDirtyFlags() & Simulation::NO_BOOTSTRAPPING); + } + } + + enableNoBootStrapping ? markDirtyFlags(Simulation::NO_BOOTSTRAPPING) : clearDirtyFlags(Simulation::NO_BOOTSTRAPPING); + forEachDescendant([&](SpatiallyNestablePointer object) { + if (object->getNestableType() == NestableType::Entity) { + EntityItemPointer entity = std::static_pointer_cast(object); + entity->markDirtyFlags(Simulation::DIRTY_COLLISION_GROUP); + enableNoBootStrapping ? entity->markDirtyFlags(Simulation::NO_BOOTSTRAPPING) : + entity->clearDirtyFlags(Simulation::NO_BOOTSTRAPPING); + } + }); + SpatiallyNestable::setParentID(value); // children are forced to be kinematic // may need to not collide with own avatar From de410b683346cf516e579cbd3236bed1fcb25a5b Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 4 Dec 2017 17:29:01 -0800 Subject: [PATCH 240/329] I need a color editor --- .../scripting/SelectionScriptingInterface.h | 40 +++++++++++++ .../utilities/lib/plotperf/XColor.qml | 59 +++++++++++++++++++ .../developer/utilities/lib/plotperf/qmldir | 3 +- .../developer/utilities/render/highlight2.qml | 18 ++++-- 4 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 scripts/developer/utilities/lib/plotperf/XColor.qml diff --git a/interface/src/scripting/SelectionScriptingInterface.h b/interface/src/scripting/SelectionScriptingInterface.h index 6abf07537e..2d9dc07661 100644 --- a/interface/src/scripting/SelectionScriptingInterface.h +++ b/interface/src/scripting/SelectionScriptingInterface.h @@ -132,8 +132,48 @@ public: */ Q_INVOKABLE bool clearSelectedItemsList(const QString& listName); + /**jsdoc + * Enable highlighting for the named selection. + * If the Selection doesn't exist, it will be created. + * All objects in the list will be displayed with the highlight effect as specified from the highlightStyle. + * The function can be called several times with different values in the style to modify it. + * + * @function Selection.enableListHighlight + * @param listName {string} name of the selection + * @param highlightStyle {jsObject} highlight style fields (see Selection.getListHighlightStyle for a detailed description of the highlightStyle). + * @returns {bool} true if the selection was successfully enabled for highlight. + */ Q_INVOKABLE bool enableListHighlight(const QString& listName, const QVariantMap& highlightStyle); + /**jsdoc + * Disable highlighting for the named selection. + * If the Selection doesn't exist or wasn't enabled for highliting then nothing happens simply returning false. + * + * @function Selection.disableListHighlight + * @param listName {string} name of the selection + * @returns {bool} true if the selection was successfully disabled for highlight, false otherwise. + */ Q_INVOKABLE bool disableListHighlight(const QString& listName); + /**jsdoc + * Query the highlight style values for the named selection. + * If the Selection doesn't exist or hasn't been highlight enabled yet, it will return an empty object. + * Otherwise, the jsObject describes the highlight style properties: + * - outlineUnoccludedColor: {xColor} Color of the specified highlight region + * - outlineOccludedColor: {xColor} " + * - fillUnoccludedColor: {xColor} " + * - fillOccludedColor: {xColor} " + * + * - outlineUnoccludedOpacity: {float} Opacity value ranging from 0.0 (not visible) to 1.0 (fully opaque) for the specified highlight region + * - outlineOccludedOpacity: {float} " + * - fillUnoccludedOpacity: {float} " + * - fillOccludedOpacity: {float} " + * + * - outlineWidth: {float} width of the outline expressed in pixels + * - isOutlineSmooth: {bool} true to enable oultine smooth falloff + * + * @function Selection.getListHighlightStyle + * @param listName {string} name of the selection + * @returns {jsObject} highlight style as described above + */ Q_INVOKABLE QVariantMap getListHighlightStyle(const QString& listName) const; render::HighlightStyle getHighlightStyle(const QString& listName) const; diff --git a/scripts/developer/utilities/lib/plotperf/XColor.qml b/scripts/developer/utilities/lib/plotperf/XColor.qml new file mode 100644 index 0000000000..1e1d28c059 --- /dev/null +++ b/scripts/developer/utilities/lib/plotperf/XColor.qml @@ -0,0 +1,59 @@ +// +// XColor.qml +// +// Created by Sam Gateau 12/4/2017 +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html +// + +import QtQuick 2.7 +import QtQuick.Controls 1.4 as Original +import QtQuick.Controls.Styles 1.4 + +import "qrc:///qml/styles-uit" +import "qrc:///qml/controls-uit" as HifiControls + + +Item { + HifiConstants { id: hifi } + id: root + + anchors.left: parent.left + anchors.right: parent.right + height: 24 + property var color + property alias label: labelControl.text + + function getColor() { + return Qt.rgba(color.red / 255.0, color.green / 255.0, color.blue / 255.0, 1.0 ); + } + + Rectangle { + id: current + HifiConstants { id: hifi;} + color: root.getColor(); + } + + Component.onCompleted: { + // Binding favors qml value, so set it first + bindingControl.when = true; + } + + HifiControls.Label { + id: labelControl + text: root.label + enabled: true + anchors.left: root.left + anchors.right: root.horizontalCenter + anchors.verticalCenter: root.verticalCenter + } + + Binding { + id: bindingControl + target: root.color + property: root.property + when: false + } +} diff --git a/scripts/developer/utilities/lib/plotperf/qmldir b/scripts/developer/utilities/lib/plotperf/qmldir index 5668f5034c..829592f87d 100644 --- a/scripts/developer/utilities/lib/plotperf/qmldir +++ b/scripts/developer/utilities/lib/plotperf/qmldir @@ -1 +1,2 @@ -PlotPerf 1.0 PlotPerf.qml \ No newline at end of file +PlotPerf 1.0 PlotPerf.qml +XColor 1.0 XColor.qml \ No newline at end of file diff --git a/scripts/developer/utilities/render/highlight2.qml b/scripts/developer/utilities/render/highlight2.qml index 6be74fcf40..b6dc49613e 100644 --- a/scripts/developer/utilities/render/highlight2.qml +++ b/scripts/developer/utilities/render/highlight2.qml @@ -15,6 +15,7 @@ import QtQuick.Layouts 1.3 import "qrc:///qml/styles-uit" import "qrc:///qml/controls-uit" as HifiControls import "configSlider" +import "../lib/plotperf" Rectangle { id: root @@ -22,8 +23,8 @@ Rectangle { color: hifi.colors.baseGray; anchors.margins: hifi.dimensions.contentMargin.x - property var debugConfig: Render.getConfig("RenderMainView.HighlightDebug") - property var highlightConfig: Render.getConfig("UpdateScene.HighlightStageSetup") + //property var debugConfig: Render.getConfig("RenderMainView.HighlightDebug") + //property var highlightConfig: Render.getConfig("UpdateScene.HighlightStageSetup") signal sendToScript(var message); @@ -60,9 +61,17 @@ Rectangle { onCheckedChanged: { sendToScript("add "+checked.toString()) } - } + } + } + Separator {} + + XColor { + color: { "red": 0, "green": 255, "blue": 0} } + Separator {} + +/* HifiControls.ComboBox { id: box width: 350 @@ -112,7 +121,7 @@ Rectangle { Column { spacing: 10 anchors.left: parent.left - anchors.right: parent.right + anchors.right: parent.right HifiControls.CheckBox { text: "Smooth" checked: root.highlightConfig["isOutlineSmooth"] @@ -173,5 +182,6 @@ Rectangle { } } } + */ } } From 1c5548b77b0a1c18ab43dd1bde32617416db0211 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Tue, 5 Dec 2017 01:25:30 -0800 Subject: [PATCH 241/329] Color picker in qml --- .../utilities/lib/plotperf/XColor.qml | 168 ++++++++++++++++-- .../developer/utilities/render/highlight2.qml | 55 +++--- 2 files changed, 174 insertions(+), 49 deletions(-) diff --git a/scripts/developer/utilities/lib/plotperf/XColor.qml b/scripts/developer/utilities/lib/plotperf/XColor.qml index 1e1d28c059..68600007d9 100644 --- a/scripts/developer/utilities/lib/plotperf/XColor.qml +++ b/scripts/developer/utilities/lib/plotperf/XColor.qml @@ -24,36 +24,176 @@ Item { anchors.right: parent.right height: 24 property var color - property alias label: labelControl.text + property var zoneWidth: width / 3; + property var hoveredOn: 0.0; + property var sliderHeight: height / 3; + signal newColor( color la_color) function getColor() { return Qt.rgba(color.red / 255.0, color.green / 255.0, color.blue / 255.0, 1.0 ); } + function repaint() { + current.color = getColor() + } + function setRed(r) { + color.red = r * 255; + repaint() + print("set red " + r) + } + function setGreen(g) { + color.green = g * 255; + repaint() + print("set green " + g) + } + function setBlue(b) { + color.blue = b * 255; + repaint() + print("set blue " + b) + } + + function resetSliders() { + redZone.set(color.red / 255) + greenZone.set(color.green / 255) + blueZone.set(color.blue / 255) + } + Rectangle { id: current - HifiConstants { id: hifi;} + anchors.fill: root color: root.getColor(); } + Rectangle { + id: sliderBack + height: root.sliderHeight + anchors.bottom: root.bottom + anchors.left: root.left + anchors.right: root.right + color: Qt.rgba(0.2, 0.2, 0.2, 1) + opacity: root.hoveredOn * 0.5 + } + + MouseArea { + id: all + anchors.fill: root + hoverEnabled: true + onEntered: { + root.hoveredOn = 1.0; + resetSliders(); + } + onExited: { + root.hoveredOn = 0.0; + } + } Component.onCompleted: { // Binding favors qml value, so set it first bindingControl.when = true; } - HifiControls.Label { - id: labelControl - text: root.label - enabled: true + Item { + id: redZone + anchors.top: root.top + anchors.bottom: root.bottom anchors.left: root.left - anchors.right: root.horizontalCenter - anchors.verticalCenter: root.verticalCenter - } + width: root.zoneWidth - Binding { - id: bindingControl - target: root.color - property: root.property - when: false + function set(r) { + if (r < 0.0) { + r = 0.0 + } else if (r > 1.0) { + r = 1.0 + } + root.setRed(r) + redRect.width = r * redZone.width + redRect.color = Qt.rgba(r, 0, 0, 1) + } + + Rectangle { + id: redRect + anchors.bottom: parent.bottom + anchors.left: parent.left + height: root.sliderHeight + opacity: root.hoveredOn + } + + MouseArea { + id: redArea + anchors.fill: parent + onPositionChanged: { + redZone.set(mouse.x / redArea.width) + } + } } + Item { + id: greenZone + anchors.top: root.top + anchors.bottom: root.bottom + anchors.left: redZone.right + + width: root.zoneWidth + + function set(g) { + if (g < 0.0) { + g = 0.0 + } else if (g > 1.0) { + g = 1.0 + } + root.setGreen(g) + greenRect.width = g * greenZone.width + greenRect.color = Qt.rgba(0, g, 0, 1) + } + + Rectangle { + id: greenRect + anchors.bottom: parent.bottom + anchors.left: parent.left + height: root.sliderHeight + opacity: root.hoveredOn + } + + MouseArea { + id: greenArea + anchors.fill: parent + onPositionChanged: { + greenZone.set(mouse.x / greenArea.width) + } + } + } + Item { + id: blueZone + anchors.top: root.top + anchors.bottom: root.bottom + anchors.right: root.right + // anchors.left: greenZone.right + + width: root.zoneWidth + + function set(b) { + if (b < 0.0) { + b = 0.0 + } else if (b > 1.0) { + b = 1.0 + } + root.setBlue(b) + blueRect.width = b * blueZone.width + blueRect.color = Qt.rgba(0, 0, b, 1) + } + + Rectangle { + id: blueRect + anchors.bottom: parent.bottom + anchors.left: parent.left + height: root.sliderHeight + opacity: root.hoveredOn + } + + MouseArea { + id: blueArea + anchors.fill: parent + onPositionChanged: { + blueZone.set(mouse.x / blueArea.width) + } + } + } } diff --git a/scripts/developer/utilities/render/highlight2.qml b/scripts/developer/utilities/render/highlight2.qml index b6dc49613e..39b6fc2825 100644 --- a/scripts/developer/utilities/render/highlight2.qml +++ b/scripts/developer/utilities/render/highlight2.qml @@ -23,9 +23,7 @@ Rectangle { color: hifi.colors.baseGray; anchors.margins: hifi.dimensions.contentMargin.x - //property var debugConfig: Render.getConfig("RenderMainView.HighlightDebug") - //property var highlightConfig: Render.getConfig("UpdateScene.HighlightStageSetup") - + signal sendToScript(var message); Column { @@ -35,40 +33,27 @@ Rectangle { anchors.right: parent.right anchors.margins: hifi.dimensions.contentMargin.x - Row { - spacing: 10 - anchors.left: parent.left - anchors.right: parent.right - - HifiControls.CheckBox { - id: debug - text: "View Mask" - checked: root.debugConfig["viewMask"] - onCheckedChanged: { - root.debugConfig["viewMask"] = checked; - } - } - HifiControls.CheckBox { - text: "Hover select" - checked: false - onCheckedChanged: { - sendToScript("pick "+checked.toString()) - } - } - HifiControls.CheckBox { - text: "Add to selection" - checked: false - onCheckedChanged: { - sendToScript("add "+checked.toString()) - } - } - } Separator {} - - XColor { - color: { "red": 0, "green": 255, "blue": 0} + Row { + height: 24 + anchors.left: parent.left + anchors.right: parent.right + HifiControls.Label { + height: 24 + width: parent.width / 2 + id: labelControl + text: "Color" + enabled: true + anchors.left: parent.left + anchors.right: parent.horizontalCenter + } + XColor { + // width: parent.width / 2 + anchors.left: parent.horizontalCenter + anchors.right: parent.right + color: { "red": 0, "green": 255, "blue": 0} + } } - Separator {} /* From 3de34834e1e2abcb351fe7f2f55f62d5c60f4f66 Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Tue, 5 Dec 2017 11:19:00 -0600 Subject: [PATCH 242/329] Changed autoTester threshold to 0.9995 Added a readme explaining how to deploy autoTester. --- tools/auto-tester/ReadMe.md | 7 +++++++ tools/auto-tester/src/Test.cpp | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 tools/auto-tester/ReadMe.md diff --git a/tools/auto-tester/ReadMe.md b/tools/auto-tester/ReadMe.md new file mode 100644 index 0000000000..57ec7ea623 --- /dev/null +++ b/tools/auto-tester/ReadMe.md @@ -0,0 +1,7 @@ +After building auto-tester, it needs to be deployed to Amazon SW + +* In folder hifi/build/tools/auto-tester + * Right click on the Release folder + * Select 7-Zip -> Add to archive + * Select Option ```Create SFX archive``` to create Release.exe +* Use Cyberduck (or any other AWS S3 client) to copy Release.exe to hifi-content/nissim/autoTester/ \ No newline at end of file diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 0506045fc3..835655eef1 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -24,7 +24,7 @@ Test::Test() { bool Test::compareImageLists(QStringList expectedImages, QStringList resultImages) { // Loop over both lists and compare each pair of images // Quit loop if user has aborted due to a failed test. - const double THRESHOLD{ 0.9998 }; + const double THRESHOLD{ 0.9995 }; bool success{ true }; bool keepOn{ true }; for (int i = 0; keepOn && i < expectedImages.length(); ++i) { From c58286d371ef8145df2f91f832f1a3698afe19fb Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Tue, 5 Dec 2017 09:31:35 -0800 Subject: [PATCH 243/329] dont do work if not needed --- libraries/entities/src/EntityItem.cpp | 39 ++++++++++++++++++++------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 82e364486b..453e78b305 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1606,23 +1606,42 @@ void EntityItem::setParentID(const QUuid& value) { tree->removeFromChildrenOfAvatars(getThisPointer()); } - bool enableNoBootStrapping = false; + uint32_t oldParentNoBootstrapping = 0; + uint32_t newParentNoBootstrapping = 0; if (!value.isNull() && tree) { EntityItemPointer entity = tree->findEntityByEntityItemID(value); if (entity) { - enableNoBootStrapping = (bool)(entity->getDirtyFlags() & Simulation::NO_BOOTSTRAPPING); + newParentNoBootstrapping = entity->getDirtyFlags() & Simulation::NO_BOOTSTRAPPING; } } - enableNoBootStrapping ? markDirtyFlags(Simulation::NO_BOOTSTRAPPING) : clearDirtyFlags(Simulation::NO_BOOTSTRAPPING); - forEachDescendant([&](SpatiallyNestablePointer object) { - if (object->getNestableType() == NestableType::Entity) { - EntityItemPointer entity = std::static_pointer_cast(object); - entity->markDirtyFlags(Simulation::DIRTY_COLLISION_GROUP); - enableNoBootStrapping ? entity->markDirtyFlags(Simulation::NO_BOOTSTRAPPING) : - entity->clearDirtyFlags(Simulation::NO_BOOTSTRAPPING); + if (!oldParentID.isNull() && tree) { + EntityItemPointer entity = tree->findEntityByEntityItemID(oldParentID); + if (entity) { + oldParentNoBootstrapping = entity->getDirtyFlags() & Simulation::NO_BOOTSTRAPPING; } - }); + } + + if ((bool)(oldParentNoBootstrapping ^ newParentNoBootstrapping)) { + if ((bool)(newParentNoBootstrapping & Simulation::NO_BOOTSTRAPPING)) { + markDirtyFlags(Simulation::NO_BOOTSTRAPPING); + forEachDescendant([&](SpatiallyNestablePointer object) { + if (object->getNestableType() == NestableType::Entity) { + EntityItemPointer entity = std::static_pointer_cast(object); + entity->markDirtyFlags(Simulation::DIRTY_COLLISION_GROUP | Simulation::NO_BOOTSTRAPPING); + } + }); + } else { + clearDirtyFlags(Simulation::NO_BOOTSTRAPPING); + forEachDescendant([&](SpatiallyNestablePointer object) { + if (object->getNestableType() == NestableType::Entity) { + EntityItemPointer entity = std::static_pointer_cast(object); + entity->markDirtyFlags(Simulation::DIRTY_COLLISION_GROUP); + entity->clearDirtyFlags(Simulation::NO_BOOTSTRAPPING); + } + }); + } + } SpatiallyNestable::setParentID(value); // children are forced to be kinematic From d59c9bd73aac2bb802e0c3f29f9e700fb1eb9b32 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 5 Dec 2017 10:26:49 -0800 Subject: [PATCH 244/329] Fix gray/incorrect security image after relog --- .../resources/qml/hifi/commerce/wallet/WalletHome.qml | 1 + interface/src/commerce/Wallet.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml b/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml index ec7468651d..d23079d3f3 100644 --- a/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml +++ b/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml @@ -68,6 +68,7 @@ Item { Connections { target: GlobalServices onMyUsernameChanged: { + transactionHistoryModel.clear(); usernameText.text = Account.username; } } diff --git a/interface/src/commerce/Wallet.cpp b/interface/src/commerce/Wallet.cpp index d4611d3e9a..69914e97a4 100644 --- a/interface/src/commerce/Wallet.cpp +++ b/interface/src/commerce/Wallet.cpp @@ -321,6 +321,16 @@ Wallet::Wallet() { auto accountManager = DependencyManager::get(); connect(accountManager.data(), &AccountManager::usernameChanged, this, [&]() { getWalletStatus(); + _publicKeys.clear(); + + if (_securityImage) { + delete _securityImage; + } + _securityImage = nullptr; + + // tell the provider we got nothing + updateImageProvider(); + _passphrase->clear(); }); } From 4334bf8222935f8e4de987929d3aaa6251b1ee3e Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 5 Dec 2017 13:09:09 -0800 Subject: [PATCH 245/329] Add data tracking for purchase and rez --- .../qml/hifi/commerce/checkout/Checkout.qml | 19 ++++++++++++++ .../hifi/commerce/purchases/PurchasedItem.qml | 6 +++++ .../UserActivityLoggerScriptingInterface.cpp | 25 +++++++++++++++++++ .../UserActivityLoggerScriptingInterface.h | 3 +++ 4 files changed, 53 insertions(+) diff --git a/interface/resources/qml/hifi/commerce/checkout/Checkout.qml b/interface/resources/qml/hifi/commerce/checkout/Checkout.qml index 6c4e020694..7d3c6e3f12 100644 --- a/interface/resources/qml/hifi/commerce/checkout/Checkout.qml +++ b/interface/resources/qml/hifi/commerce/checkout/Checkout.qml @@ -79,10 +79,23 @@ Rectangle { if (result.status !== 'success') { failureErrorText.text = result.message; root.activeView = "checkoutFailure"; + var data = { + "marketplaceID": root.itemId, + "cost": root.itemPrice, + "firstPurchaseOfThisItem": !root.alreadyOwned, + "errorDetails": result.message + } + UserActivityLogger.logAction("commercePurchaseFailure", data); } else { root.itemHref = result.data.download_url; root.isWearable = result.data.categories.indexOf("Wearables") > -1; root.activeView = "checkoutSuccess"; + var data = { + "marketplaceID": root.itemId, + "cost": root.itemPrice, + "firstPurchaseOfThisItem": !root.alreadyOwned + } + UserActivityLogger.logAction("commercePurchaseSuccess", data); } } @@ -599,6 +612,12 @@ Rectangle { sendToScript({method: 'checkout_rezClicked', itemHref: root.itemHref, isWearable: root.isWearable}); rezzedNotifContainer.visible = true; rezzedNotifContainerTimer.start(); + var data = { + "marketplaceID": root.itemId, + "source": "checkout", + "type": root.isWearable ? "rez" : "wear" + } + UserActivityLogger.logAction("commerceEntityRezzed", data); } } RalewaySemiBold { diff --git a/interface/resources/qml/hifi/commerce/purchases/PurchasedItem.qml b/interface/resources/qml/hifi/commerce/purchases/PurchasedItem.qml index 15ebada0c4..17e5b21562 100644 --- a/interface/resources/qml/hifi/commerce/purchases/PurchasedItem.qml +++ b/interface/resources/qml/hifi/commerce/purchases/PurchasedItem.qml @@ -349,6 +349,12 @@ Item { sendToPurchases({method: 'purchases_rezClicked', itemHref: root.itemHref, isWearable: root.isWearable}); rezzedNotifContainer.visible = true; rezzedNotifContainerTimer.start(); + var data = { + "marketplaceID": root.itemId, + "source": "purchases", + "type": root.isWearable ? "rez" : "wear" + } + UserActivityLogger.logAction("commerceEntityRezzed", data); } style: ButtonStyle { diff --git a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp index 61f2071c5f..f9d8decfa6 100644 --- a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp +++ b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp @@ -88,3 +88,28 @@ void UserActivityLoggerScriptingInterface::doLogAction(QString action, QJsonObje Q_ARG(QString, action), Q_ARG(QJsonObject, details)); } + +void UserActivityLoggerScriptingInterface::commercePurchaseSuccess(QString marketplaceID, int cost, bool firstPurchaseOfThisItem) { + QJsonObject payload; + payload["marketplaceID"] = marketplaceID; + payload["cost"] = cost; + payload["firstPurchaseOfThisItem"] = firstPurchaseOfThisItem; + doLogAction("commercePurchaseSuccess", payload); +} + +void UserActivityLoggerScriptingInterface::commercePurchaseFailure(QString marketplaceID, int cost, bool firstPurchaseOfThisItem, QString errorDetails) { + QJsonObject payload; + payload["marketplaceID"] = marketplaceID; + payload["cost"] = cost; + payload["firstPurchaseOfThisItem"] = firstPurchaseOfThisItem; + payload["errorDetails"] = errorDetails; + doLogAction("commercePurchaseFailure", payload); +} + +void UserActivityLoggerScriptingInterface::commerceEntityRezzed(QString marketplaceID, QString source, QString type) { + QJsonObject payload; + payload["marketplaceID"] = marketplaceID; + payload["source"] = source; + payload["type"] = type; + doLogAction("commerceEntityRezzed", payload); +} diff --git a/libraries/networking/src/UserActivityLoggerScriptingInterface.h b/libraries/networking/src/UserActivityLoggerScriptingInterface.h index 885f637a62..37d3ab4c12 100644 --- a/libraries/networking/src/UserActivityLoggerScriptingInterface.h +++ b/libraries/networking/src/UserActivityLoggerScriptingInterface.h @@ -33,6 +33,9 @@ public: Q_INVOKABLE void bubbleToggled(bool newValue); Q_INVOKABLE void bubbleActivated(); Q_INVOKABLE void logAction(QString action, QVariantMap details = QVariantMap{}); + Q_INVOKABLE void commercePurchaseSuccess(QString marketplaceID, int cost, bool firstPurchaseOfThisItem); + Q_INVOKABLE void commercePurchaseFailure(QString marketplaceID, int cost, bool firstPurchaseOfThisItem, QString errorDetails); + Q_INVOKABLE void commerceEntityRezzed(QString marketplaceID, QString source, QString type); private: void doLogAction(QString action, QJsonObject details = {}); }; From bbc022da2d0cc24ab0c147be7256959051950c87 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Tue, 5 Dec 2017 14:09:46 -0800 Subject: [PATCH 246/329] fix-far-to-equip --- scripts/system/controllers/controllerModules/equipEntity.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/controllers/controllerModules/equipEntity.js b/scripts/system/controllers/controllerModules/equipEntity.js index b8c20d5bd6..7edeae0a53 100644 --- a/scripts/system/controllers/controllerModules/equipEntity.js +++ b/scripts/system/controllers/controllerModules/equipEntity.js @@ -10,7 +10,7 @@ getControllerJointIndex, enableDispatcherModule, disableDispatcherModule, Messages, makeDispatcherModuleParameters, makeRunningValues, Settings, entityHasActions, Vec3, Overlays, flatten, Xform, getControllerWorldLocation, ensureDynamic, entityIsCloneable, - cloneEntity, DISPATCHER_PROPERTIES + cloneEntity, DISPATCHER_PROPERTIES, TEAR_AWAY_DISTANCE */ Script.include("/~/system/libraries/Xform.js"); @@ -162,7 +162,7 @@ EquipHotspotBuddy.prototype.update = function(deltaTime, timestamp, controllerDa var ATTACH_POINT_SETTINGS = "io.highfidelity.attachPoints"; - var EQUIP_RADIUS = 0.2; // radius used for palm vs equip-hotspot for equipping. + var EQUIP_RADIUS = 0.25; // radius used for palm vs equip-hotspot for equipping. var HAPTIC_PULSE_STRENGTH = 1.0; var HAPTIC_PULSE_DURATION = 13.0; From 668f6d50b5040855f9b6eba4b952762d8c624706 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 5 Dec 2017 14:13:48 -0800 Subject: [PATCH 247/329] Add data tracking for wallet setup --- .../qml/hifi/commerce/wallet/Wallet.qml | 10 +++++++ .../qml/hifi/commerce/wallet/WalletSetup.qml | 22 ++++++++++++++ .../UserActivityLoggerScriptingInterface.cpp | 29 +++++++++++++++++++ .../UserActivityLoggerScriptingInterface.h | 3 ++ 4 files changed, 64 insertions(+) diff --git a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml index 71a73e31db..3578485a01 100644 --- a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml +++ b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml @@ -48,6 +48,16 @@ Rectangle { if (root.activeView !== "walletSetup") { root.activeView = "walletSetup"; commerce.resetLocalWalletOnly(); + var timestamp = new Date(); + walletSetup.startingTimestamp = timestamp; + var data = { + "timestamp": timestamp, + "setupAttemptID": guid(), + "setupFlowVersion": walletSetup.setupFlowVersion, + "referrer": walletSetup.referrer, + "currentDomain": (AddressManager.placename || AddressManager.hostname || '') + (AddressManager.pathname ? AddressManager.pathname.match(/\/[^\/]+/)[0] : '') + } + UserActivityLogger.logAction("commerceWalletSetupStarted", data); } } else if (walletStatus === 2) { if (root.activeView !== "passphraseModal") { diff --git a/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml b/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml index 8de831ef75..773407cf8a 100644 --- a/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml +++ b/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml @@ -31,6 +31,9 @@ Item { property bool hasShownSecurityImageTip: false; property string referrer; property string keyFilePath; + property date startingTimestamp; + readonly property int setupFlowVersion: 1; + readonly property var setupStepNames: [ "Setup Prompt", "Security Image Selection", "Passphrase Selection", "Private Keys Ready" ]; Image { anchors.fill: parent; @@ -67,6 +70,18 @@ Item { anchors.fill: parent; } + onActiveViewChanged: { + var timestamp = new Date(); + var currentStepNumber = root.activeView.substring(5); + var data = { + "timestamp": timestamp, + "secondsElapsed": (root.startingTimestamp - timestamp), + "currentStepNumber": currentStepNumber, + "currentStepName": root.setupStepNames[currentStepNumber] + } + UserActivityLogger.logAction("commerceWalletSetupProgress", data); + } + // // TITLE BAR START // @@ -730,6 +745,13 @@ Item { root.visible = false; root.hasShownSecurityImageTip = false; sendSignalToWallet({method: 'walletSetup_finished', referrer: root.referrer ? root.referrer : ""}); + + var timestamp = new Date(); + var data = { + "timestamp": timestamp, + "secondsToComplete": (root.startingTimestamp - timestamp) + } + UserActivityLogger.logAction("commerceWalletSetupFinished", data); } } } diff --git a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp index f9d8decfa6..ba24d8dcbe 100644 --- a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp +++ b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp @@ -113,3 +113,32 @@ void UserActivityLoggerScriptingInterface::commerceEntityRezzed(QString marketpl payload["type"] = type; doLogAction("commerceEntityRezzed", payload); } + +void UserActivityLoggerScriptingInterface::commerceWalletSetupStarted(float timestamp, QString setupAttemptID, int setupFlowVersion, QString referrer, QString currentDomain) { + QJsonObject payload; + payload["timestamp"] = timestamp; + payload["setupAttemptID"] = setupAttemptID; + payload["setupFlowVersion"] = setupFlowVersion; + payload["referrer"] = referrer; + payload["currentDomain"] = currentDomain; + qDebug() << "ZRF" << payload; + //doLogAction("commerceWalletSetupStarted", payload); +} + +void UserActivityLoggerScriptingInterface::commerceWalletSetupProgress(float timestamp, float secondsElapsed, int currentStepNumber, QString currentStepName) { + QJsonObject payload; + payload["timestamp"] = timestamp; + payload["secondsElapsed"] = secondsElapsed; + payload["currentStepNumber"] = currentStepNumber; + payload["currentStepName"] = currentStepName; + qDebug() << "ZRF" << payload; + //doLogAction("commerceWalletSetupProgress", payload); +} + +void UserActivityLoggerScriptingInterface::commerceWalletSetupFinished(float timestamp, float secondsToComplete) { + QJsonObject payload; + payload["timestamp"] = timestamp; + payload["secondsToComplete"] = secondsToComplete; + qDebug() << "ZRF" << payload; + //doLogAction("commerceWalletSetupFinished", payload); +} diff --git a/libraries/networking/src/UserActivityLoggerScriptingInterface.h b/libraries/networking/src/UserActivityLoggerScriptingInterface.h index 37d3ab4c12..3e8002e0aa 100644 --- a/libraries/networking/src/UserActivityLoggerScriptingInterface.h +++ b/libraries/networking/src/UserActivityLoggerScriptingInterface.h @@ -36,6 +36,9 @@ public: Q_INVOKABLE void commercePurchaseSuccess(QString marketplaceID, int cost, bool firstPurchaseOfThisItem); Q_INVOKABLE void commercePurchaseFailure(QString marketplaceID, int cost, bool firstPurchaseOfThisItem, QString errorDetails); Q_INVOKABLE void commerceEntityRezzed(QString marketplaceID, QString source, QString type); + Q_INVOKABLE void commerceWalletSetupStarted(float timestamp, QString setupAttemptID, int setupFlowVersion, QString referrer, QString currentDomain); + Q_INVOKABLE void commerceWalletSetupProgress(float timestamp, float secondsElapsed, int currentStepNumber, QString currentStepName); + Q_INVOKABLE void commerceWalletSetupFinished(float timestamp, float secondsToComplete); private: void doLogAction(QString action, QJsonObject details = {}); }; From 7521e4870e82c943eb1afa55eb707ef82640461a Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 5 Dec 2017 14:56:47 -0800 Subject: [PATCH 248/329] Bugfixes --- .../qml/hifi/commerce/checkout/Checkout.qml | 22 ++---------- .../hifi/commerce/purchases/PurchasedItem.qml | 7 +--- .../qml/hifi/commerce/wallet/Help.qml | 34 ++++++++++++++++++- .../qml/hifi/commerce/wallet/Wallet.qml | 26 +++++++++----- .../qml/hifi/commerce/wallet/WalletSetup.qml | 14 ++------ .../UserActivityLoggerScriptingInterface.cpp | 6 ++-- .../UserActivityLoggerScriptingInterface.h | 6 ++-- scripts/system/marketplaces/marketplaces.js | 1 + 8 files changed, 64 insertions(+), 52 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/checkout/Checkout.qml b/interface/resources/qml/hifi/commerce/checkout/Checkout.qml index 7d3c6e3f12..c8a63a4d2d 100644 --- a/interface/resources/qml/hifi/commerce/checkout/Checkout.qml +++ b/interface/resources/qml/hifi/commerce/checkout/Checkout.qml @@ -79,23 +79,12 @@ Rectangle { if (result.status !== 'success') { failureErrorText.text = result.message; root.activeView = "checkoutFailure"; - var data = { - "marketplaceID": root.itemId, - "cost": root.itemPrice, - "firstPurchaseOfThisItem": !root.alreadyOwned, - "errorDetails": result.message - } - UserActivityLogger.logAction("commercePurchaseFailure", data); + UserActivityLogger.commercePurchaseFailure(root.itemId, root.itemPrice, !root.alreadyOwned, result.message); } else { root.itemHref = result.data.download_url; root.isWearable = result.data.categories.indexOf("Wearables") > -1; root.activeView = "checkoutSuccess"; - var data = { - "marketplaceID": root.itemId, - "cost": root.itemPrice, - "firstPurchaseOfThisItem": !root.alreadyOwned - } - UserActivityLogger.logAction("commercePurchaseSuccess", data); + UserActivityLogger.commercePurchaseSuccess(root.itemId, root.itemPrice, !root.alreadyOwned); } } @@ -612,12 +601,7 @@ Rectangle { sendToScript({method: 'checkout_rezClicked', itemHref: root.itemHref, isWearable: root.isWearable}); rezzedNotifContainer.visible = true; rezzedNotifContainerTimer.start(); - var data = { - "marketplaceID": root.itemId, - "source": "checkout", - "type": root.isWearable ? "rez" : "wear" - } - UserActivityLogger.logAction("commerceEntityRezzed", data); + UserActivityLogger.commerceEntityRezzed(root.itemId, "checkout", root.isWearable ? "rez" : "wear"); } } RalewaySemiBold { diff --git a/interface/resources/qml/hifi/commerce/purchases/PurchasedItem.qml b/interface/resources/qml/hifi/commerce/purchases/PurchasedItem.qml index 17e5b21562..f7913e5b1e 100644 --- a/interface/resources/qml/hifi/commerce/purchases/PurchasedItem.qml +++ b/interface/resources/qml/hifi/commerce/purchases/PurchasedItem.qml @@ -349,12 +349,7 @@ Item { sendToPurchases({method: 'purchases_rezClicked', itemHref: root.itemHref, isWearable: root.isWearable}); rezzedNotifContainer.visible = true; rezzedNotifContainerTimer.start(); - var data = { - "marketplaceID": root.itemId, - "source": "purchases", - "type": root.isWearable ? "rez" : "wear" - } - UserActivityLogger.logAction("commerceEntityRezzed", data); + UserActivityLogger.commerceEntityRezzed(root.itemId, "purchases", root.isWearable ? "rez" : "wear"); } style: ButtonStyle { diff --git a/interface/resources/qml/hifi/commerce/wallet/Help.qml b/interface/resources/qml/hifi/commerce/wallet/Help.qml index ebba2b87c6..8cccb10533 100644 --- a/interface/resources/qml/hifi/commerce/wallet/Help.qml +++ b/interface/resources/qml/hifi/commerce/wallet/Help.qml @@ -55,6 +55,38 @@ Item { // Style color: hifi.colors.blueHighlight; } + + HifiControlsUit.Button { + id: clearCachedPassphraseButton; + visible: root.showDebugButtons; + color: hifi.buttons.black; + colorScheme: hifi.colorSchemes.dark; + anchors.top: parent.top; + anchors.left: helpTitleText.right; + anchors.leftMargin: 20; + height: 40; + width: 150; + text: "DBG: Clear Pass"; + onClicked: { + commerce.setPassphrase(""); + sendSignalToWallet({method: 'passphraseReset'}); + } + } + HifiControlsUit.Button { + id: resetButton; + visible: root.showDebugButtons; + color: hifi.buttons.red; + colorScheme: hifi.colorSchemes.dark; + anchors.top: clearCachedPassphraseButton.top; + anchors.left: clearCachedPassphraseButton.right; + height: 40; + width: 150; + text: "DBG: RST Wallet"; + onClicked: { + commerce.reset(); + sendSignalToWallet({method: 'walletReset'}); + } + } ListModel { id: helpModel; @@ -147,7 +179,7 @@ Item { text: model.isExpanded ? "-" : "+"; // Anchors anchors.top: parent.top; - anchors.topMargin: model.isExpanded ? -9 : 0; + anchors.topMargin: model.isExpanded ?9 : 0; anchors.bottom: parent.bottom; anchors.left: parent.left; width: 60; diff --git a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml index 3578485a01..d7e4536fed 100644 --- a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml +++ b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml @@ -50,14 +50,8 @@ Rectangle { commerce.resetLocalWalletOnly(); var timestamp = new Date(); walletSetup.startingTimestamp = timestamp; - var data = { - "timestamp": timestamp, - "setupAttemptID": guid(), - "setupFlowVersion": walletSetup.setupFlowVersion, - "referrer": walletSetup.referrer, - "currentDomain": (AddressManager.placename || AddressManager.hostname || '') + (AddressManager.pathname ? AddressManager.pathname.match(/\/[^\/]+/)[0] : '') - } - UserActivityLogger.logAction("commerceWalletSetupStarted", data); + UserActivityLogger.commerceWalletSetupStarted(timestamp, generateUUID(), walletSetup.setupFlowVersion, walletSetup.referrer ? walletSetup.referrer : "wallet app", + (AddressManager.placename || AddressManager.hostname || '') + (AddressManager.pathname ? AddressManager.pathname.match(/\/[^\/]+/)[0] : '')); } } else if (walletStatus === 2) { if (root.activeView !== "passphraseModal") { @@ -711,12 +705,28 @@ Rectangle { case 'updateWalletReferrer': walletSetup.referrer = message.referrer; break; + case 'inspectionCertificate_resetCert': + // NOP + break; default: console.log('Unrecognized message from wallet.js:', JSON.stringify(message)); } } signal sendToScript(var message); + // generateUUID() taken from: + // https://stackoverflow.com/a/8809472 + function generateUUID() { // Public Domain/MIT + var d = new Date().getTime(); + if (typeof performance !== 'undefined' && typeof performance.now === 'function'){ + d += performance.now(); //use high-precision timer if available + } + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = (d + Math.random() * 16) % 16 | 0; + d = Math.floor(d / 16); + return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); + }); + } // // FUNCTION DEFINITIONS END // diff --git a/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml b/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml index 773407cf8a..9bb578f7d6 100644 --- a/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml +++ b/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml @@ -73,13 +73,7 @@ Item { onActiveViewChanged: { var timestamp = new Date(); var currentStepNumber = root.activeView.substring(5); - var data = { - "timestamp": timestamp, - "secondsElapsed": (root.startingTimestamp - timestamp), - "currentStepNumber": currentStepNumber, - "currentStepName": root.setupStepNames[currentStepNumber] - } - UserActivityLogger.logAction("commerceWalletSetupProgress", data); + UserActivityLogger.commerceWalletSetupProgress(timestamp, Math.round((timestamp - root.startingTimestamp)/1000), currentStepNumber, root.setupStepNames[currentStepNumber - 1]); } // @@ -747,11 +741,7 @@ Item { sendSignalToWallet({method: 'walletSetup_finished', referrer: root.referrer ? root.referrer : ""}); var timestamp = new Date(); - var data = { - "timestamp": timestamp, - "secondsToComplete": (root.startingTimestamp - timestamp) - } - UserActivityLogger.logAction("commerceWalletSetupFinished", data); + UserActivityLogger.commerceWalletSetupFinished(timestamp, Math.round((timestamp - root.startingTimestamp)/1000)); } } } diff --git a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp index ba24d8dcbe..79fa7dad0f 100644 --- a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp +++ b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp @@ -114,7 +114,7 @@ void UserActivityLoggerScriptingInterface::commerceEntityRezzed(QString marketpl doLogAction("commerceEntityRezzed", payload); } -void UserActivityLoggerScriptingInterface::commerceWalletSetupStarted(float timestamp, QString setupAttemptID, int setupFlowVersion, QString referrer, QString currentDomain) { +void UserActivityLoggerScriptingInterface::commerceWalletSetupStarted(int timestamp, QString setupAttemptID, int setupFlowVersion, QString referrer, QString currentDomain) { QJsonObject payload; payload["timestamp"] = timestamp; payload["setupAttemptID"] = setupAttemptID; @@ -125,7 +125,7 @@ void UserActivityLoggerScriptingInterface::commerceWalletSetupStarted(float time //doLogAction("commerceWalletSetupStarted", payload); } -void UserActivityLoggerScriptingInterface::commerceWalletSetupProgress(float timestamp, float secondsElapsed, int currentStepNumber, QString currentStepName) { +void UserActivityLoggerScriptingInterface::commerceWalletSetupProgress(int timestamp, int secondsElapsed, int currentStepNumber, QString currentStepName) { QJsonObject payload; payload["timestamp"] = timestamp; payload["secondsElapsed"] = secondsElapsed; @@ -135,7 +135,7 @@ void UserActivityLoggerScriptingInterface::commerceWalletSetupProgress(float tim //doLogAction("commerceWalletSetupProgress", payload); } -void UserActivityLoggerScriptingInterface::commerceWalletSetupFinished(float timestamp, float secondsToComplete) { +void UserActivityLoggerScriptingInterface::commerceWalletSetupFinished(int timestamp, int secondsToComplete) { QJsonObject payload; payload["timestamp"] = timestamp; payload["secondsToComplete"] = secondsToComplete; diff --git a/libraries/networking/src/UserActivityLoggerScriptingInterface.h b/libraries/networking/src/UserActivityLoggerScriptingInterface.h index 3e8002e0aa..aafbbb7df0 100644 --- a/libraries/networking/src/UserActivityLoggerScriptingInterface.h +++ b/libraries/networking/src/UserActivityLoggerScriptingInterface.h @@ -36,9 +36,9 @@ public: Q_INVOKABLE void commercePurchaseSuccess(QString marketplaceID, int cost, bool firstPurchaseOfThisItem); Q_INVOKABLE void commercePurchaseFailure(QString marketplaceID, int cost, bool firstPurchaseOfThisItem, QString errorDetails); Q_INVOKABLE void commerceEntityRezzed(QString marketplaceID, QString source, QString type); - Q_INVOKABLE void commerceWalletSetupStarted(float timestamp, QString setupAttemptID, int setupFlowVersion, QString referrer, QString currentDomain); - Q_INVOKABLE void commerceWalletSetupProgress(float timestamp, float secondsElapsed, int currentStepNumber, QString currentStepName); - Q_INVOKABLE void commerceWalletSetupFinished(float timestamp, float secondsToComplete); + Q_INVOKABLE void commerceWalletSetupStarted(int timestamp, QString setupAttemptID, int setupFlowVersion, QString referrer, QString currentDomain); + Q_INVOKABLE void commerceWalletSetupProgress(int timestamp, int secondsElapsed, int currentStepNumber, QString currentStepName); + Q_INVOKABLE void commerceWalletSetupFinished(int timestamp, int secondsToComplete); private: void doLogAction(QString action, QJsonObject details = {}); }; diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js index 646e5452df..24b2947bcf 100644 --- a/scripts/system/marketplaces/marketplaces.js +++ b/scripts/system/marketplaces/marketplaces.js @@ -399,6 +399,7 @@ referrer: "purchases" }); openWallet(); + break; case 'checkout_walletNotSetUp': wireEventBridge(true); tablet.sendToQml({ From c807fc80e3a0a24c1831a0f53a7685f013e82423 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 5 Dec 2017 15:25:05 -0800 Subject: [PATCH 249/329] Add marketplace cta referrer --- .../resources/qml/hifi/commerce/wallet/Wallet.qml | 2 +- scripts/system/marketplaces/marketplaces.js | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml index d7e4536fed..22cec52b48 100644 --- a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml +++ b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml @@ -177,7 +177,7 @@ Rectangle { Connections { onSendSignalToWallet: { if (msg.method === 'walletSetup_finished') { - if (msg.referrer === '') { + if (msg.referrer === '' || msg.referrer === 'marketplace cta') { root.activeView = "initialize"; commerce.getWalletStatus(); } else if (msg.referrer === 'purchases') { diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js index 24b2947bcf..cfb0f4cc8e 100644 --- a/scripts/system/marketplaces/marketplaces.js +++ b/scripts/system/marketplaces/marketplaces.js @@ -110,8 +110,9 @@ var filterText; // Used for updating Purchases QML function onScreenChanged(type, url) { onMarketplaceScreen = type === "Web" && url.indexOf(MARKETPLACE_URL) !== -1; - onCommerceScreen = type === "QML" && (url.indexOf(MARKETPLACE_CHECKOUT_QML_PATH_BASE) !== -1 || url === MARKETPLACE_PURCHASES_QML_PATH || url.indexOf(MARKETPLACE_INSPECTIONCERTIFICATE_QML_PATH) !== -1); - wireEventBridge(onCommerceScreen); + onCommerceScreen = type === "QML" && (url.indexOf(MARKETPLACE_CHECKOUT_QML_PATH_BASE) !== -1 || url === MARKETPLACE_PURCHASES_QML_PATH + || url.indexOf(MARKETPLACE_INSPECTIONCERTIFICATE_QML_PATH) !== -1 || url.indexOf(MARKETPLACE_WALLET_QML_PATH) !== -1); + wireEventBridge(onMarketplaceScreen || onCommerceScreen); if (url === MARKETPLACE_PURCHASES_QML_PATH) { tablet.sendToQml({ @@ -322,6 +323,11 @@ } else if (parsedJsonMessage.type === "LOGIN") { openLoginWindow(); } else if (parsedJsonMessage.type === "WALLET_SETUP") { + wireEventBridge(true); + tablet.sendToQml({ + method: 'updateWalletReferrer', + referrer: "marketplace cta" + }); openWallet(); } else if (parsedJsonMessage.type === "MY_ITEMS") { referrerURL = MARKETPLACE_URL_INITIAL; From 902064ed373c271eac433d8508bbfe382881538c Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 5 Dec 2017 15:26:55 -0800 Subject: [PATCH 250/329] Cleanup debug stuff --- .../qml/hifi/commerce/wallet/Help.qml | 34 +------------------ .../UserActivityLoggerScriptingInterface.cpp | 9 ++--- 2 files changed, 4 insertions(+), 39 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/wallet/Help.qml b/interface/resources/qml/hifi/commerce/wallet/Help.qml index 8cccb10533..ebba2b87c6 100644 --- a/interface/resources/qml/hifi/commerce/wallet/Help.qml +++ b/interface/resources/qml/hifi/commerce/wallet/Help.qml @@ -55,38 +55,6 @@ Item { // Style color: hifi.colors.blueHighlight; } - - HifiControlsUit.Button { - id: clearCachedPassphraseButton; - visible: root.showDebugButtons; - color: hifi.buttons.black; - colorScheme: hifi.colorSchemes.dark; - anchors.top: parent.top; - anchors.left: helpTitleText.right; - anchors.leftMargin: 20; - height: 40; - width: 150; - text: "DBG: Clear Pass"; - onClicked: { - commerce.setPassphrase(""); - sendSignalToWallet({method: 'passphraseReset'}); - } - } - HifiControlsUit.Button { - id: resetButton; - visible: root.showDebugButtons; - color: hifi.buttons.red; - colorScheme: hifi.colorSchemes.dark; - anchors.top: clearCachedPassphraseButton.top; - anchors.left: clearCachedPassphraseButton.right; - height: 40; - width: 150; - text: "DBG: RST Wallet"; - onClicked: { - commerce.reset(); - sendSignalToWallet({method: 'walletReset'}); - } - } ListModel { id: helpModel; @@ -179,7 +147,7 @@ Item { text: model.isExpanded ? "-" : "+"; // Anchors anchors.top: parent.top; - anchors.topMargin: model.isExpanded ?9 : 0; + anchors.topMargin: model.isExpanded ? -9 : 0; anchors.bottom: parent.bottom; anchors.left: parent.left; width: 60; diff --git a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp index 79fa7dad0f..b58537f8ef 100644 --- a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp +++ b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp @@ -121,8 +121,7 @@ void UserActivityLoggerScriptingInterface::commerceWalletSetupStarted(int timest payload["setupFlowVersion"] = setupFlowVersion; payload["referrer"] = referrer; payload["currentDomain"] = currentDomain; - qDebug() << "ZRF" << payload; - //doLogAction("commerceWalletSetupStarted", payload); + doLogAction("commerceWalletSetupStarted", payload); } void UserActivityLoggerScriptingInterface::commerceWalletSetupProgress(int timestamp, int secondsElapsed, int currentStepNumber, QString currentStepName) { @@ -131,14 +130,12 @@ void UserActivityLoggerScriptingInterface::commerceWalletSetupProgress(int times payload["secondsElapsed"] = secondsElapsed; payload["currentStepNumber"] = currentStepNumber; payload["currentStepName"] = currentStepName; - qDebug() << "ZRF" << payload; - //doLogAction("commerceWalletSetupProgress", payload); + doLogAction("commerceWalletSetupProgress", payload); } void UserActivityLoggerScriptingInterface::commerceWalletSetupFinished(int timestamp, int secondsToComplete) { QJsonObject payload; payload["timestamp"] = timestamp; payload["secondsToComplete"] = secondsToComplete; - qDebug() << "ZRF" << payload; - //doLogAction("commerceWalletSetupFinished", payload); + doLogAction("commerceWalletSetupFinished", payload); } From 2752dc7cacfcfb9cdcc62655f57644cfa405377c Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 6 Dec 2017 12:28:55 +1300 Subject: [PATCH 251/329] Fix dimensions of cloned cube, sphere, shape, and model overlays --- interface/src/ui/overlays/ModelOverlay.cpp | 5 +++-- interface/src/ui/overlays/Volume3DOverlay.cpp | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index 09d9ba574a..2cd9b0f7f5 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -34,8 +34,9 @@ ModelOverlay::ModelOverlay(const ModelOverlay* modelOverlay) : _model(std::make_shared(nullptr, this)), _modelTextures(QVariantMap()), _url(modelOverlay->_url), - _updateModel(false), - _loadPriority(modelOverlay->getLoadPriority()) + _scaleToFit(modelOverlay->_scaleToFit), + _loadPriority(modelOverlay->_loadPriority), + _updateModel(false) { _model->init(); _model->setLoadingPriority(_loadPriority); diff --git a/interface/src/ui/overlays/Volume3DOverlay.cpp b/interface/src/ui/overlays/Volume3DOverlay.cpp index b580545288..49c76e6108 100644 --- a/interface/src/ui/overlays/Volume3DOverlay.cpp +++ b/interface/src/ui/overlays/Volume3DOverlay.cpp @@ -14,7 +14,8 @@ #include Volume3DOverlay::Volume3DOverlay(const Volume3DOverlay* volume3DOverlay) : - Base3DOverlay(volume3DOverlay) + Base3DOverlay(volume3DOverlay), + _localBoundingBox(volume3DOverlay->_localBoundingBox) { } From e074bd85f9683cab2e21b1df4ec4948917d00b7f Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 6 Dec 2017 12:29:09 +1300 Subject: [PATCH 252/329] Fix shape of cloned shape overlay --- interface/src/ui/overlays/Shape3DOverlay.cpp | 5 +++-- interface/src/ui/overlays/Shape3DOverlay.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/interface/src/ui/overlays/Shape3DOverlay.cpp b/interface/src/ui/overlays/Shape3DOverlay.cpp index ca6446d215..07949d5349 100644 --- a/interface/src/ui/overlays/Shape3DOverlay.cpp +++ b/interface/src/ui/overlays/Shape3DOverlay.cpp @@ -18,8 +18,9 @@ QString const Shape3DOverlay::TYPE = "shape"; -Shape3DOverlay::Shape3DOverlay(const Shape3DOverlay* Shape3DOverlay) : - Volume3DOverlay(Shape3DOverlay) +Shape3DOverlay::Shape3DOverlay(const Shape3DOverlay* shape3DOverlay) : + Volume3DOverlay(shape3DOverlay), + _shape(shape3DOverlay->_shape) { } diff --git a/interface/src/ui/overlays/Shape3DOverlay.h b/interface/src/ui/overlays/Shape3DOverlay.h index e9e26e3c94..7fc95ec981 100644 --- a/interface/src/ui/overlays/Shape3DOverlay.h +++ b/interface/src/ui/overlays/Shape3DOverlay.h @@ -23,7 +23,7 @@ public: virtual QString getType() const override { return TYPE; } Shape3DOverlay() {} - Shape3DOverlay(const Shape3DOverlay* Shape3DOverlay); + Shape3DOverlay(const Shape3DOverlay* shape3DOverlay); virtual void render(RenderArgs* args) override; virtual const render::ShapeKey getShapeKey() override; From c007c6d00f5317c0d9fc6afb7d1ff4da9eceeef6 Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Wed, 6 Dec 2017 02:47:19 +0300 Subject: [PATCH 253/329] 10108 marketplace category cannot scroll --- scripts/system/html/js/marketplacesInject.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/scripts/system/html/js/marketplacesInject.js b/scripts/system/html/js/marketplacesInject.js index 1346bcd750..878c3b51f1 100644 --- a/scripts/system/html/js/marketplacesInject.js +++ b/scripts/system/html/js/marketplacesInject.js @@ -327,6 +327,19 @@ }); } + // fix for 10108 - marketplace category cannot scroll + function injectAddScrollbarToCategories() { + $('#categories-dropdown').on('show.bs.dropdown', function () { + $('body > div.container').css('display', 'none') + $('#categories-dropdown > ul.dropdown-menu').css({ 'overflow': 'auto', 'height': 'calc(100vh - 110px)' }) + }); + + $('#categories-dropdown').on('hide.bs.dropdown', function () { + $('body > div.container').css('display', '') + $('#categories-dropdown > ul.dropdown-menu').css({ 'overflow': '', 'height': '' }) + }); + } + function injectHiFiCode() { if (commerceMode) { maybeAddLogInButton(); @@ -358,6 +371,7 @@ } injectUnfocusOnSearch(); + injectAddScrollbarToCategories(); } function injectHiFiItemPageCode() { From 8af1d8d8d02c9590d5b0602956c7233d4b4eb545 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Tue, 5 Dec 2017 15:48:09 -0800 Subject: [PATCH 254/329] dont run code if not nesscassry --- libraries/entities/src/EntityItem.cpp | 37 +++++++++++++-------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 453e78b305..55b345cff5 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1968,17 +1968,19 @@ bool EntityItem::addActionInternal(EntitySimulationPointer simulation, EntityDyn if (success) { _allActionsDataCache = newDataCache; _dirtyFlags |= Simulation::DIRTY_PHYSICS_ACTIVATION; - _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; // may need to not collide with own avatar auto actionType = action->getType(); if (actionType == DYNAMIC_TYPE_HOLD || actionType == DYNAMIC_TYPE_FAR_GRAB) { - _dirtyFlags |= Simulation::NO_BOOTSTRAPPING; - forEachDescendant([&](SpatiallyNestablePointer child) { - if (child->getNestableType() == NestableType::Entity) { - EntityItemPointer entity = std::static_pointer_cast(child); - entity->markDirtyFlags(Simulation::NO_BOOTSTRAPPING | Simulation::DIRTY_COLLISION_GROUP); - } - }); + if (!(bool)(_dirtyFlags & Simulation::NO_BOOTSTRAPPING)) { + _dirtyFlags |= Simulation::NO_BOOTSTRAPPING; + _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; // may need to not collide with own avatar + forEachDescendant([&](SpatiallyNestablePointer child) { + if (child->getNestableType() == NestableType::Entity) { + EntityItemPointer entity = std::static_pointer_cast(child); + entity->markDirtyFlags(Simulation::NO_BOOTSTRAPPING | Simulation::DIRTY_COLLISION_GROUP); + } + }); + } } } else { qCDebug(entities) << "EntityItem::addActionInternal -- serializeActions failed"; @@ -2056,7 +2058,6 @@ bool EntityItem::removeActionInternal(const QUuid& actionID, EntitySimulationPoi action->setOwnerEntity(nullptr); action->setIsMine(false); - _objectActions.remove(actionID); if (simulation) { action->removeFromSimulation(simulation); @@ -2065,17 +2066,10 @@ bool EntityItem::removeActionInternal(const QUuid& actionID, EntitySimulationPoi bool success = true; serializeActions(success, _allActionsDataCache); _dirtyFlags |= Simulation::DIRTY_PHYSICS_ACTIVATION; - _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; // may need to not collide with own avatar - if (stillHasGrabActions()) { - _dirtyFlags |= Simulation::NO_BOOTSTRAPPING; - forEachDescendant([&](SpatiallyNestablePointer child) { - if (child->getNestableType() == NestableType::Entity) { - EntityItemPointer entity = std::static_pointer_cast(child); - entity->markDirtyFlags(Simulation::NO_BOOTSTRAPPING | Simulation::DIRTY_COLLISION_GROUP); - } - }); - } else if ((bool)(_dirtyFlags & Simulation::NO_BOOTSTRAPPING)) { + auto removedActionType = action->getType(); + if ((removedActionType == DYNAMIC_TYPE_HOLD || removedActionType == DYNAMIC_TYPE_FAR_GRAB) && !stillHasGrabActions()) { _dirtyFlags &= ~Simulation::NO_BOOTSTRAPPING; + _dirtyFlags |= Simulation::DIRTY_COLLISION_GROUP; // may need to not collide with own avatar forEachDescendant([&](SpatiallyNestablePointer child) { if (child->getNestableType() == NestableType::Entity) { EntityItemPointer entity = std::static_pointer_cast(child); @@ -2083,7 +2077,12 @@ bool EntityItem::removeActionInternal(const QUuid& actionID, EntitySimulationPoi entity->clearDirtyFlags(Simulation::NO_BOOTSTRAPPING); } }); + } else { + // NO-OP: we assume NO_BOOTSTRAPPING bits and collision group are correct + // because they should have been set correctly when the action was added + // and/or when children were linked } + _objectActions.remove(actionID); setDynamicDataNeedsTransmit(true); return success; } From 20d6615417172663a45c0ee8468e340b60cddfd4 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Tue, 5 Dec 2017 16:13:44 -0800 Subject: [PATCH 255/329] emit only when recording --- interface/src/scripting/Audio.cpp | 16 ++++++++++------ interface/src/scripting/Audio.h | 3 +-- libraries/audio-client/src/AudioClient.cpp | 7 +++++-- libraries/audio-client/src/AudioClient.h | 5 +++++ 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/interface/src/scripting/Audio.cpp b/interface/src/scripting/Audio.cpp index 7ed5c2ead9..0d0a845a7a 100644 --- a/interface/src/scripting/Audio.cpp +++ b/interface/src/scripting/Audio.cpp @@ -59,9 +59,7 @@ Audio::Audio() : _devices(_contextIsHMD) { } void Audio::onOutputBufferReceived(const QByteArray outputBuffer) { - if (_isRecording) { - _audioFileWav.addRawAudioChunk((char*)outputBuffer.data(), outputBuffer.size()); - } + _audioFileWav.addRawAudioChunk((char*)outputBuffer.data(), outputBuffer.size()); } bool Audio::startRecording(const QString& filepath) { @@ -71,15 +69,21 @@ bool Audio::startRecording(const QString& filepath) { return false; } connect(client, &AudioClient::outputBufferReceived, this, &Audio::onOutputBufferReceived); - _isRecording = true; + client->setRecording(true); return true; } +bool Audio::getRecording() { + auto client = DependencyManager::get().data(); + return client->getRecording(); +} + void Audio::stopRecording() { auto client = DependencyManager::get().data(); disconnect(client, &AudioClient::outputBufferReceived, this, 0); - if (_isRecording) { - _isRecording = false; + + if (client->getRecording()) { + client->setRecording(false); _audioFileWav.close(); } } diff --git a/interface/src/scripting/Audio.h b/interface/src/scripting/Audio.h index 7e10761970..dbedb99a0d 100644 --- a/interface/src/scripting/Audio.h +++ b/interface/src/scripting/Audio.h @@ -58,7 +58,7 @@ public: Q_INVOKABLE bool startRecording(const QString& filename); Q_INVOKABLE void stopRecording(); - Q_INVOKABLE bool getRecording() { return _isRecording; }; + Q_INVOKABLE bool getRecording(); signals: void nop(); @@ -89,7 +89,6 @@ private: bool _isMuted { false }; bool _enableNoiseReduction { true }; // Match default value of AudioClient::_isNoiseGateEnabled. bool _contextIsHMD { false }; - bool _isRecording { false }; AudioDevices* getDevices() { return &_devices; } AudioDevices _devices; AudioFileWav _audioFileWav; diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 96b96d2bb1..7524641f37 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -1909,8 +1909,11 @@ qint64 AudioClient::AudioOutputIODevice::readData(char * data, qint64 maxSize) { } // send output buffer for recording - QByteArray outputBuffer(reinterpret_cast(scratchBuffer), bytesWritten); - emit _audio->outputBufferReceived(outputBuffer); + if (_audio->_isRecording) { + QByteArray outputBuffer(reinterpret_cast(scratchBuffer), bytesWritten); + emit _audio->outputBufferReceived(outputBuffer); + } + int bytesAudioOutputUnplayed = _audio->_audioOutput->bufferSize() - _audio->_audioOutput->bytesFree(); float msecsAudioOutputUnplayed = bytesAudioOutputUnplayed / (float)_audio->_outputFormat.bytesForDuration(USECS_PER_MSEC); diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index eb9de29411..5ec85aab0f 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -158,6 +158,9 @@ public: bool getNamedAudioDeviceForModeExists(QAudio::Mode mode, const QString& deviceName); + void setRecording(bool isRecording) { _isRecording = isRecording; }; + bool getRecording() { return _isRecording; }; + #ifdef Q_OS_WIN static QString getWinDeviceName(wchar_t* guid); #endif @@ -420,6 +423,8 @@ private: QTimer* _checkDevicesTimer { nullptr }; QTimer* _checkPeakValuesTimer { nullptr }; + + bool _isRecording { false }; }; From cafebf6a7e89653fc6af55ca84ec68902ad4bf76 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 6 Dec 2017 13:38:42 +1300 Subject: [PATCH 256/329] Fix Unix build warnings and tidy initializers --- interface/src/ui/overlays/ModelOverlay.cpp | 4 ++-- interface/src/ui/overlays/ModelOverlay.h | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index 2cd9b0f7f5..f27e26280a 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -34,9 +34,9 @@ ModelOverlay::ModelOverlay(const ModelOverlay* modelOverlay) : _model(std::make_shared(nullptr, this)), _modelTextures(QVariantMap()), _url(modelOverlay->_url), + _updateModel(false), _scaleToFit(modelOverlay->_scaleToFit), - _loadPriority(modelOverlay->_loadPriority), - _updateModel(false) + _loadPriority(modelOverlay->_loadPriority) { _model->init(); _model->setLoadingPriority(_loadPriority); diff --git a/interface/src/ui/overlays/ModelOverlay.h b/interface/src/ui/overlays/ModelOverlay.h index ea0eff170c..c4506d9621 100644 --- a/interface/src/ui/overlays/ModelOverlay.h +++ b/interface/src/ui/overlays/ModelOverlay.h @@ -75,8 +75,8 @@ private: QVariantMap _modelTextures; QUrl _url; - bool _updateModel = { false }; - bool _scaleToFit = { false }; + bool _updateModel { false }; + bool _scaleToFit { false }; float _loadPriority { 0.0f }; AnimationPointer _animation; @@ -87,7 +87,7 @@ private: bool _animationRunning { false }; bool _animationLoop { false }; float _animationFirstFrame { 0.0f }; - float _animationLastFrame = { 0.0f }; + float _animationLastFrame { 0.0f }; bool _animationHold { false }; bool _animationAllowTranslation { false }; uint64_t _lastAnimated { 0 }; From 3183a1a8b983dcf79ef7d7fd5657c92831f4b01c Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 5 Dec 2017 16:48:30 -0800 Subject: [PATCH 257/329] Add setupAttemptID to every step (thanks Dave) --- interface/resources/qml/hifi/commerce/wallet/Wallet.qml | 3 ++- .../resources/qml/hifi/commerce/wallet/WalletSetup.qml | 6 ++++-- .../networking/src/UserActivityLoggerScriptingInterface.cpp | 6 ++++-- .../networking/src/UserActivityLoggerScriptingInterface.h | 4 ++-- scripts/system/marketplaces/marketplaces.js | 5 +++-- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml index 22cec52b48..ac05bf7c84 100644 --- a/interface/resources/qml/hifi/commerce/wallet/Wallet.qml +++ b/interface/resources/qml/hifi/commerce/wallet/Wallet.qml @@ -50,7 +50,8 @@ Rectangle { commerce.resetLocalWalletOnly(); var timestamp = new Date(); walletSetup.startingTimestamp = timestamp; - UserActivityLogger.commerceWalletSetupStarted(timestamp, generateUUID(), walletSetup.setupFlowVersion, walletSetup.referrer ? walletSetup.referrer : "wallet app", + walletSetup.setupAttemptID = generateUUID(); + UserActivityLogger.commerceWalletSetupStarted(timestamp, setupAttemptID, walletSetup.setupFlowVersion, walletSetup.referrer ? walletSetup.referrer : "wallet app", (AddressManager.placename || AddressManager.hostname || '') + (AddressManager.pathname ? AddressManager.pathname.match(/\/[^\/]+/)[0] : '')); } } else if (walletStatus === 2) { diff --git a/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml b/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml index 9bb578f7d6..d7859d2800 100644 --- a/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml +++ b/interface/resources/qml/hifi/commerce/wallet/WalletSetup.qml @@ -32,6 +32,7 @@ Item { property string referrer; property string keyFilePath; property date startingTimestamp; + property string setupAttemptID; readonly property int setupFlowVersion: 1; readonly property var setupStepNames: [ "Setup Prompt", "Security Image Selection", "Passphrase Selection", "Private Keys Ready" ]; @@ -73,7 +74,8 @@ Item { onActiveViewChanged: { var timestamp = new Date(); var currentStepNumber = root.activeView.substring(5); - UserActivityLogger.commerceWalletSetupProgress(timestamp, Math.round((timestamp - root.startingTimestamp)/1000), currentStepNumber, root.setupStepNames[currentStepNumber - 1]); + UserActivityLogger.commerceWalletSetupProgress(timestamp, root.setupAttemptID, + Math.round((timestamp - root.startingTimestamp)/1000), currentStepNumber, root.setupStepNames[currentStepNumber - 1]); } // @@ -741,7 +743,7 @@ Item { sendSignalToWallet({method: 'walletSetup_finished', referrer: root.referrer ? root.referrer : ""}); var timestamp = new Date(); - UserActivityLogger.commerceWalletSetupFinished(timestamp, Math.round((timestamp - root.startingTimestamp)/1000)); + UserActivityLogger.commerceWalletSetupFinished(timestamp, setupAttemptID, Math.round((timestamp - root.startingTimestamp)/1000)); } } } diff --git a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp index b58537f8ef..0965c9834f 100644 --- a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp +++ b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp @@ -124,18 +124,20 @@ void UserActivityLoggerScriptingInterface::commerceWalletSetupStarted(int timest doLogAction("commerceWalletSetupStarted", payload); } -void UserActivityLoggerScriptingInterface::commerceWalletSetupProgress(int timestamp, int secondsElapsed, int currentStepNumber, QString currentStepName) { +void UserActivityLoggerScriptingInterface::commerceWalletSetupProgress(int timestamp, QString setupAttemptID, int secondsElapsed, int currentStepNumber, QString currentStepName) { QJsonObject payload; payload["timestamp"] = timestamp; + payload["setupAttemptID"] = setupAttemptID; payload["secondsElapsed"] = secondsElapsed; payload["currentStepNumber"] = currentStepNumber; payload["currentStepName"] = currentStepName; doLogAction("commerceWalletSetupProgress", payload); } -void UserActivityLoggerScriptingInterface::commerceWalletSetupFinished(int timestamp, int secondsToComplete) { +void UserActivityLoggerScriptingInterface::commerceWalletSetupFinished(int timestamp, QString setupAttemptID, int secondsToComplete) { QJsonObject payload; payload["timestamp"] = timestamp; + payload["setupAttemptID"] = setupAttemptID; payload["secondsToComplete"] = secondsToComplete; doLogAction("commerceWalletSetupFinished", payload); } diff --git a/libraries/networking/src/UserActivityLoggerScriptingInterface.h b/libraries/networking/src/UserActivityLoggerScriptingInterface.h index aafbbb7df0..e71723f03c 100644 --- a/libraries/networking/src/UserActivityLoggerScriptingInterface.h +++ b/libraries/networking/src/UserActivityLoggerScriptingInterface.h @@ -37,8 +37,8 @@ public: Q_INVOKABLE void commercePurchaseFailure(QString marketplaceID, int cost, bool firstPurchaseOfThisItem, QString errorDetails); Q_INVOKABLE void commerceEntityRezzed(QString marketplaceID, QString source, QString type); Q_INVOKABLE void commerceWalletSetupStarted(int timestamp, QString setupAttemptID, int setupFlowVersion, QString referrer, QString currentDomain); - Q_INVOKABLE void commerceWalletSetupProgress(int timestamp, int secondsElapsed, int currentStepNumber, QString currentStepName); - Q_INVOKABLE void commerceWalletSetupFinished(int timestamp, int secondsToComplete); + Q_INVOKABLE void commerceWalletSetupProgress(int timestamp, QString setupAttemptID, int secondsElapsed, int currentStepNumber, QString currentStepName); + Q_INVOKABLE void commerceWalletSetupFinished(int timestamp, QString setupAttemptID, int secondsToComplete); private: void doLogAction(QString action, QJsonObject details = {}); }; diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js index cfb0f4cc8e..1893c2d097 100644 --- a/scripts/system/marketplaces/marketplaces.js +++ b/scripts/system/marketplaces/marketplaces.js @@ -110,8 +110,9 @@ var filterText; // Used for updating Purchases QML function onScreenChanged(type, url) { onMarketplaceScreen = type === "Web" && url.indexOf(MARKETPLACE_URL) !== -1; + onWalletScreen = url.indexOf(MARKETPLACE_WALLET_QML_PATH) !== -1; onCommerceScreen = type === "QML" && (url.indexOf(MARKETPLACE_CHECKOUT_QML_PATH_BASE) !== -1 || url === MARKETPLACE_PURCHASES_QML_PATH - || url.indexOf(MARKETPLACE_INSPECTIONCERTIFICATE_QML_PATH) !== -1 || url.indexOf(MARKETPLACE_WALLET_QML_PATH) !== -1); + || url.indexOf(MARKETPLACE_INSPECTIONCERTIFICATE_QML_PATH) !== -1 || onWalletScreen); wireEventBridge(onMarketplaceScreen || onCommerceScreen); if (url === MARKETPLACE_PURCHASES_QML_PATH) { @@ -123,7 +124,7 @@ } // for toolbar mode: change button to active when window is first openend, false otherwise. - marketplaceButton.editProperties({ isActive: onMarketplaceScreen || onCommerceScreen }); + marketplaceButton.editProperties({ isActive: (onMarketplaceScreen || onCommerceScreen) && !onWalletScreen }); if (type === "Web" && url.indexOf(MARKETPLACE_URL) !== -1) { ContextOverlay.isInMarketplaceInspectionMode = true; } else { From 8abe8b987944a18c2ef71c9db12b3caf6bd527d5 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Tue, 5 Dec 2017 18:22:14 -0800 Subject: [PATCH 258/329] move save logic to audioclient --- interface/src/scripting/Audio.cpp | 19 ++----------------- interface/src/scripting/Audio.h | 2 -- libraries/audio-client/src/AudioClient.cpp | 21 +++++++++++++++++++-- libraries/audio-client/src/AudioClient.h | 6 ++++++ 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/interface/src/scripting/Audio.cpp b/interface/src/scripting/Audio.cpp index 0d0a845a7a..be9b4280f7 100644 --- a/interface/src/scripting/Audio.cpp +++ b/interface/src/scripting/Audio.cpp @@ -58,19 +58,9 @@ Audio::Audio() : _devices(_contextIsHMD) { enableNoiseReduction(enableNoiseReductionSetting.get()); } -void Audio::onOutputBufferReceived(const QByteArray outputBuffer) { - _audioFileWav.addRawAudioChunk((char*)outputBuffer.data(), outputBuffer.size()); -} - bool Audio::startRecording(const QString& filepath) { auto client = DependencyManager::get().data(); - if (!_audioFileWav.create(client->getOutputFormat(), filepath)) { - qDebug() << "Error creating audio file: "+filepath; - return false; - } - connect(client, &AudioClient::outputBufferReceived, this, &Audio::onOutputBufferReceived); - client->setRecording(true); - return true; + return client->startRecording(filepath); } bool Audio::getRecording() { @@ -80,12 +70,7 @@ bool Audio::getRecording() { void Audio::stopRecording() { auto client = DependencyManager::get().data(); - disconnect(client, &AudioClient::outputBufferReceived, this, 0); - - if (client->getRecording()) { - client->setRecording(false); - _audioFileWav.close(); - } + client->stopRecording(); } void Audio::setMuted(bool isMuted) { diff --git a/interface/src/scripting/Audio.h b/interface/src/scripting/Audio.h index dbedb99a0d..0f0043510c 100644 --- a/interface/src/scripting/Audio.h +++ b/interface/src/scripting/Audio.h @@ -76,7 +76,6 @@ private slots: void onNoiseReductionChanged(); void onInputVolumeChanged(float volume); void onInputLoudnessChanged(float loudness); - void onOutputBufferReceived(const QByteArray outputBuffer); protected: // Audio must live on a separate thread from AudioClient to avoid deadlocks @@ -91,7 +90,6 @@ private: bool _contextIsHMD { false }; AudioDevices* getDevices() { return &_devices; } AudioDevices _devices; - AudioFileWav _audioFileWav; }; }; diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 7524641f37..af86499101 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -79,6 +79,7 @@ Setting::Handle staticJitterBufferFrames("staticJitterBufferFrames", using Mutex = std::mutex; using Lock = std::unique_lock; Mutex _deviceMutex; +Mutex _recordMutex; // thread-safe QList getAvailableDevices(QAudio::Mode mode) { @@ -1910,8 +1911,8 @@ qint64 AudioClient::AudioOutputIODevice::readData(char * data, qint64 maxSize) { // send output buffer for recording if (_audio->_isRecording) { - QByteArray outputBuffer(reinterpret_cast(scratchBuffer), bytesWritten); - emit _audio->outputBufferReceived(outputBuffer); + Lock lock(_recordMutex); + _audio->_audioFileWav.addRawAudioChunk(reinterpret_cast(scratchBuffer), bytesWritten); } @@ -1926,6 +1927,22 @@ qint64 AudioClient::AudioOutputIODevice::readData(char * data, qint64 maxSize) { return bytesWritten; } +bool AudioClient::startRecording(const QString& filepath) { + if (!_audioFileWav.create(_outputFormat, filepath)) { + qDebug() << "Error creating audio file: " + filepath; + return false; + } + _isRecording = true; + return true; +} + +void AudioClient::stopRecording() { + if (_isRecording) { + _isRecording = false; + _audioFileWav.close(); + } +} + void AudioClient::loadSettings() { _receivedAudioStream.setDynamicJitterBufferEnabled(dynamicJitterBufferEnabled.get()); _receivedAudioStream.setStaticJitterBufferFrames(staticJitterBufferFrames.get()); diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index 5ec85aab0f..0ceb9c4dc3 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -161,6 +161,10 @@ public: void setRecording(bool isRecording) { _isRecording = isRecording; }; bool getRecording() { return _isRecording; }; + bool startRecording(const QString& filename); + void stopRecording(); + + #ifdef Q_OS_WIN static QString getWinDeviceName(wchar_t* guid); #endif @@ -402,6 +406,8 @@ private: QList _inputDevices; QList _outputDevices; + AudioFileWav _audioFileWav; + bool _hasReceivedFirstPacket { false }; QVector _activeLocalAudioInjectors; From 1483195285c3a47ccdb01f882ee60e35fd3c40ce Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 5 Dec 2017 18:27:53 -0800 Subject: [PATCH 259/329] almost complete setup working, yeah --- .../scripting/SelectionScriptingInterface.cpp | 8 + .../scripting/SelectionScriptingInterface.h | 2 + .../lib/plotperf/{XColor.qml => Color.qml} | 87 ++++--- .../developer/utilities/lib/plotperf/qmldir | 2 +- .../render/configSlider/ConfigSlider.qml | 4 + .../render/highlight/HighlightStyle.qml | 105 ++++++++ .../utilities/render/highlight/qmldir | 1 + .../developer/utilities/render/highlight2.qml | 226 +++++++----------- 8 files changed, 261 insertions(+), 174 deletions(-) rename scripts/developer/utilities/lib/plotperf/{XColor.qml => Color.qml} (74%) create mode 100644 scripts/developer/utilities/render/highlight/HighlightStyle.qml create mode 100644 scripts/developer/utilities/render/highlight/qmldir diff --git a/interface/src/scripting/SelectionScriptingInterface.cpp b/interface/src/scripting/SelectionScriptingInterface.cpp index ba500ae010..841e1738e3 100644 --- a/interface/src/scripting/SelectionScriptingInterface.cpp +++ b/interface/src/scripting/SelectionScriptingInterface.cpp @@ -146,6 +146,14 @@ QVariantMap SelectionScriptingInterface::getListHighlightStyle(const QString& li } } + +QStringList SelectionScriptingInterface::getHighlightStyles() const { + QStringList list; + QReadLocker lock(&_highlightStylesLock); + list = _highlightStyleMap.keys(); + return list; +} + render::HighlightStyle SelectionScriptingInterface::getHighlightStyle(const QString& listName) const { QReadLocker lock(&_highlightStylesLock); auto highlightStyle = _highlightStyleMap.find(listName); diff --git a/interface/src/scripting/SelectionScriptingInterface.h b/interface/src/scripting/SelectionScriptingInterface.h index 2d9dc07661..d0dcf8caec 100644 --- a/interface/src/scripting/SelectionScriptingInterface.h +++ b/interface/src/scripting/SelectionScriptingInterface.h @@ -176,6 +176,8 @@ public: */ Q_INVOKABLE QVariantMap getListHighlightStyle(const QString& listName) const; + Q_INVOKABLE QStringList getHighlightStyles() const; + render::HighlightStyle getHighlightStyle(const QString& listName) const; void onSelectedItemsListChanged(const QString& listName); diff --git a/scripts/developer/utilities/lib/plotperf/XColor.qml b/scripts/developer/utilities/lib/plotperf/Color.qml similarity index 74% rename from scripts/developer/utilities/lib/plotperf/XColor.qml rename to scripts/developer/utilities/lib/plotperf/Color.qml index 68600007d9..15d7f9fcc9 100644 --- a/scripts/developer/utilities/lib/plotperf/XColor.qml +++ b/scripts/developer/utilities/lib/plotperf/Color.qml @@ -1,5 +1,5 @@ // -// XColor.qml +// Color.qml // // Created by Sam Gateau 12/4/2017 // Copyright 2017 High Fidelity, Inc. @@ -20,48 +20,57 @@ Item { HifiConstants { id: hifi } id: root - anchors.left: parent.left - anchors.right: parent.right height: 24 - property var color + + property var _color: Qt.rgba(1.0, 1.0, 1.0, 1.0 ); property var zoneWidth: width / 3; property var hoveredOn: 0.0; - property var sliderHeight: height / 3; + property var sliderHeight: height / 2; - signal newColor( color la_color) - function getColor() { - return Qt.rgba(color.red / 255.0, color.green / 255.0, color.blue / 255.0, 1.0 ); - } + signal newColor(color __color) - function repaint() { - current.color = getColor() - } + function setColor(color) { + _color = Qt.rgba(color.r, color.g, color.b, 1.0) + updateColor() + } function setRed(r) { - color.red = r * 255; - repaint() - print("set red " + r) + _color.r = r; + updateColor() } function setGreen(g) { - color.green = g * 255; - repaint() - print("set green " + g) + _color.g = g; + updateColor() } function setBlue(b) { - color.blue = b * 255; + _color.b = b; + updateColor() + } + + function updateColor() { repaint() - print("set blue " + b) + newColor(_color) + } + function repaint() { + current.color = _color } function resetSliders() { - redZone.set(color.red / 255) - greenZone.set(color.green / 255) - blueZone.set(color.blue / 255) + redZone.set(_color.r) + greenZone.set(_color.g) + blueZone.set(_color.b) + } + + function setXColor(xcolor) { + setColor(Qt.rgba(xcolor.red/255, xcolor.green/255, color.blue/255, 1.0)) + } + function getXColor() { + return {red:_color.r * 255, green:_color.g * 255, blue:_color.b * 255} } Rectangle { id: current anchors.fill: root - color: root.getColor(); + color: root._color; } Rectangle { id: sliderBack @@ -87,8 +96,6 @@ Item { } Component.onCompleted: { - // Binding favors qml value, so set it first - bindingControl.when = true; } Item { @@ -98,13 +105,16 @@ Item { anchors.left: root.left width: root.zoneWidth - function set(r) { + function update(r) { if (r < 0.0) { r = 0.0 } else if (r > 1.0) { r = 1.0 } root.setRed(r) + set(r) + } + function set(r) { redRect.width = r * redZone.width redRect.color = Qt.rgba(r, 0, 0, 1) } @@ -121,7 +131,7 @@ Item { id: redArea anchors.fill: parent onPositionChanged: { - redZone.set(mouse.x / redArea.width) + redZone.update(mouse.x / redArea.width) } } } @@ -129,17 +139,19 @@ Item { id: greenZone anchors.top: root.top anchors.bottom: root.bottom - anchors.left: redZone.right - + anchors.horizontalCenter: root.horizontalCenter width: root.zoneWidth - function set(g) { + function update(g) { if (g < 0.0) { g = 0.0 } else if (g > 1.0) { g = 1.0 } root.setGreen(g) + set(g) + } + function set(g) { greenRect.width = g * greenZone.width greenRect.color = Qt.rgba(0, g, 0, 1) } @@ -156,7 +168,7 @@ Item { id: greenArea anchors.fill: parent onPositionChanged: { - greenZone.set(mouse.x / greenArea.width) + greenZone.update(mouse.x / greenArea.width) } } } @@ -164,18 +176,19 @@ Item { id: blueZone anchors.top: root.top anchors.bottom: root.bottom - anchors.right: root.right - // anchors.left: greenZone.right - + anchors.right: root.right width: root.zoneWidth - function set(b) { + function update(b) { if (b < 0.0) { b = 0.0 } else if (b > 1.0) { b = 1.0 } root.setBlue(b) + set(b) + } + function set(b) { blueRect.width = b * blueZone.width blueRect.color = Qt.rgba(0, 0, b, 1) } @@ -192,7 +205,7 @@ Item { id: blueArea anchors.fill: parent onPositionChanged: { - blueZone.set(mouse.x / blueArea.width) + blueZone.update(mouse.x / blueArea.width) } } } diff --git a/scripts/developer/utilities/lib/plotperf/qmldir b/scripts/developer/utilities/lib/plotperf/qmldir index 829592f87d..20b3fc9fcf 100644 --- a/scripts/developer/utilities/lib/plotperf/qmldir +++ b/scripts/developer/utilities/lib/plotperf/qmldir @@ -1,2 +1,2 @@ PlotPerf 1.0 PlotPerf.qml -XColor 1.0 XColor.qml \ No newline at end of file +Color 1.0 Color.qml diff --git a/scripts/developer/utilities/render/configSlider/ConfigSlider.qml b/scripts/developer/utilities/render/configSlider/ConfigSlider.qml index 830dc6de23..87e0e51726 100644 --- a/scripts/developer/utilities/render/configSlider/ConfigSlider.qml +++ b/scripts/developer/utilities/render/configSlider/ConfigSlider.qml @@ -30,6 +30,8 @@ Item { property alias min: sliderControl.minimumValue property alias max: sliderControl.maximumValue + signal valueChanged(real value) + Component.onCompleted: { // Binding favors qml value, so set it first sliderControl.value = root.config[root.property]; @@ -69,5 +71,7 @@ Item { anchors.rightMargin: 0 anchors.top: root.top anchors.topMargin: 0 + + onValueChanged: { root.valueChanged(value) } } } diff --git a/scripts/developer/utilities/render/highlight/HighlightStyle.qml b/scripts/developer/utilities/render/highlight/HighlightStyle.qml new file mode 100644 index 0000000000..189ac10b42 --- /dev/null +++ b/scripts/developer/utilities/render/highlight/HighlightStyle.qml @@ -0,0 +1,105 @@ +// +// highlightStyle.qml +// +// Created by Sam Gateau 12/4/2017 +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html +// +import QtQuick 2.7 +import QtQuick.Controls 1.4 +import QtQuick.Layouts 1.3 +import "../configSlider" +import "../../lib/plotperf" +import "qrc:///qml/styles-uit" +import "qrc:///qml/controls-uit" as HifiControls + +Item { + id: root + property var highlightStyle + height: 48 + + anchors.margins: 0 + + signal newStyle() + + function getStyle() { + return highlightStyle; + } + + Component.onCompleted: { + } + + Column { + spacing: 5 + anchors.left: root.left + anchors.right: root.right + anchors.margins: 0 + + + + ConfigSlider { + label: "Outline Width" + integral: false + config: root.highlightStyle + property: "outlineWidth" + max: 10 + min: 0 + + anchors.left: parent.left + anchors.right: parent.right + + onValueChanged: { root.highlightStyle["outlineWidth"] = value; newStyle() } + } + HifiControls.CheckBox { + id: isOutlineSmooth + text: "Smooth Outline" + checked: root.highlightStyle["isOutlineSmooth"] + onCheckedChanged: { + root.highlightStyle["isOutlineSmooth"] = checked; + newStyle(); + } + } + + Repeater { + model: [ + "Outline Unoccluded:outlineUnoccludedColor:outlineUnoccludedIntensity", + "Outline Occluded:outlineOccludedColor:outlineOccludedIntensity", + "Fill Unoccluded:fillUnoccludedColor:fillUnoccludedIntensity", + "Fill Occluded:fillOccludedColor:fillOccludedIntensity"] + Column { + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: 0 + + Color { + height: 20 + anchors.right: parent.right + width: root.width / 2 + _color: Qt.rgba(root.highlightStyle[modelData.split(":")[1]].red / 255, root.highlightStyle[modelData.split(":")[1]].green / 255, root.highlightStyle[modelData.split(":")[1]].blue / 255, 1.0) + onNewColor: { + root.highlightStyle[modelData.split(":")[1]] = getXColor() + newStyle() + } + } + + ConfigSlider { + label: qsTr(modelData.split(":")[0]) + integral: false + config: root.highlightStyle + property: modelData.split(":")[2] + max: 1.0 + min: 0.0 + + anchors.left: parent.left + anchors.right: parent.right + + onValueChanged: { root.highlightStyle[modelData.split(":")[2]] = value; newStyle() } + } + + } + } + + } +} diff --git a/scripts/developer/utilities/render/highlight/qmldir b/scripts/developer/utilities/render/highlight/qmldir new file mode 100644 index 0000000000..31fc576bbe --- /dev/null +++ b/scripts/developer/utilities/render/highlight/qmldir @@ -0,0 +1 @@ +HighlightStyle 1.0 HighlightStyle.qml \ No newline at end of file diff --git a/scripts/developer/utilities/render/highlight2.qml b/scripts/developer/utilities/render/highlight2.qml index 39b6fc2825..583488c37d 100644 --- a/scripts/developer/utilities/render/highlight2.qml +++ b/scripts/developer/utilities/render/highlight2.qml @@ -16,157 +16,111 @@ import "qrc:///qml/styles-uit" import "qrc:///qml/controls-uit" as HifiControls import "configSlider" import "../lib/plotperf" +import "highlight" -Rectangle { +Item { id: root HifiConstants { id: hifi;} - color: hifi.colors.baseGray; - anchors.margins: hifi.dimensions.contentMargin.x + anchors.margins: 0 + property var listName: "contextOverlayHighlightList" + + property var styleList: Selection.getHighlightStyles() - signal sendToScript(var message); + Component.onCompleted: { + } + + Column { id: col - spacing: 10 - anchors.left: parent.left - anchors.right: parent.right + spacing: 5 + anchors.left: root.left + anchors.right: root.right anchors.margins: hifi.dimensions.contentMargin.x - Separator {} - Row { + Row { + id: controlbar + spacing: 10 + anchors.left: parent.left + anchors.right: parent.right height: 24 + + HifiControls.Button { + id: debug + text: "Refresh" + height: 24 + width: 128 + onClicked: { + print("list of highlight styles") + root.styleList = Selection.getHighlightStyles() + + print(root.styleList) + styleSelectorLoader.sourceComponent = undefined; + styleSelectorLoader.sourceComponent = selectorWidget; + } + } + + Loader { + id: styleSelectorLoader + sourceComponent: selectorWidget + width: 350 + anchors.right: parent.right + } + Component { + id: selectorWidget + HifiControls.ComboBox { + id: box + width: 350 + z: 999 + editable: true + colorScheme: hifi.colorSchemes.dark + model: root.styleList + label: "" + + Timer { + id: postpone + interval: 100; running: false; repeat: false + onTriggered: { styleWidgetLoader.sourceComponent = styleWidget } + } + onCurrentIndexChanged: { + root.listName = model[currentIndex]; + // sendToScript("highlight "+currentIndex) + // This is a hack to be sure the widgets below properly reflect the change of category: delete the Component + // by setting the loader source to Null and then recreate it 100ms later + styleWidgetLoader.sourceComponent = undefined; + postpone.interval = 100 + postpone.start() + } + } + + + } + } + + Separator {} + Loader { + id: styleWidgetLoader + sourceComponent: styleWidget + anchors.left: parent.left + anchors.right: parent.right + } + } + + Component { + id: styleWidget + + HighlightStyle { + id: highlightStyle anchors.left: parent.left anchors.right: parent.right - HifiControls.Label { - height: 24 - width: parent.width / 2 - id: labelControl - text: "Color" - enabled: true - anchors.left: parent.left - anchors.right: parent.horizontalCenter - } - XColor { - // width: parent.width / 2 - anchors.left: parent.horizontalCenter - anchors.right: parent.right - color: { "red": 0, "green": 255, "blue": 0} - } - } - Separator {} + highlightStyle: Selection.getListHighlightStyle(root.listName) -/* - HifiControls.ComboBox { - id: box - width: 350 - z: 999 - editable: true - colorScheme: hifi.colorSchemes.dark - model: [ - "contextOverlayHighlightList", - "highlightList1", - "highlightList2", - "highlightList3", - "highlightList4"] - label: "" - - Timer { - id: postpone - interval: 100; running: false; repeat: false - onTriggered: { paramWidgetLoader.sourceComponent = paramWidgets } - } - onCurrentIndexChanged: { - root.highlightConfig["selectionName"] = model[currentIndex]; - sendToScript("highlight "+currentIndex) - // This is a hack to be sure the widgets below properly reflect the change of category: delete the Component - // by setting the loader source to Null and then recreate it 100ms later - paramWidgetLoader.sourceComponent = undefined; - postpone.interval = 100 - postpone.start() + onNewStyle: { + var style = getStyle() + // print("new style " + JSON.stringify(style) ) + Selection.enableListHighlight(root.listName, style) } } - - Loader { - id: paramWidgetLoader - sourceComponent: paramWidgets - width: 350 - } - - Component { - id: paramWidgets - - Column { - spacing: 10 - anchors.margins: hifi.dimensions.contentMargin.x - - HifiControls.Label { - text: "Outline" - } - Column { - spacing: 10 - anchors.left: parent.left - anchors.right: parent.right - HifiControls.CheckBox { - text: "Smooth" - checked: root.highlightConfig["isOutlineSmooth"] - onCheckedChanged: { - root.highlightConfig["isOutlineSmooth"] = checked; - } - } - Repeater { - model: ["Width:outlineWidth:5.0:0.0", - "Intensity:outlineIntensity:1.0:0.0" - ] - ConfigSlider { - label: qsTr(modelData.split(":")[0]) - integral: false - config: root.highlightConfig - property: modelData.split(":")[1] - max: modelData.split(":")[2] - min: modelData.split(":")[3] - } - } - } - - Separator {} - HifiControls.Label { - text: "Color" - } - Repeater { - model: ["Red:colorR:1.0:0.0", - "Green:colorG:1.0:0.0", - "Blue:colorB:1.0:0.0" - ] - ConfigSlider { - label: qsTr(modelData.split(":")[0]) - integral: false - config: root.highlightConfig - property: modelData.split(":")[1] - max: modelData.split(":")[2] - min: modelData.split(":")[3] - } - } - - Separator {} - HifiControls.Label { - text: "Fill Opacity" - } - Repeater { - model: ["Unoccluded:unoccludedFillOpacity:1.0:0.0", - "Occluded:occludedFillOpacity:1.0:0.0" - ] - ConfigSlider { - label: qsTr(modelData.split(":")[0]) - integral: false - config: root.highlightConfig - property: modelData.split(":")[1] - max: modelData.split(":")[2] - min: modelData.split(":")[3] - } - } - } - } - */ } } From 0f3a70553c624769bb825afa54b3b526eb50af96 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Wed, 6 Dec 2017 11:18:15 -0800 Subject: [PATCH 260/329] fix dynamic entities that are parented to your avatar --- libraries/entities/src/EntityItem.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 55b345cff5..48370b02fd 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1622,6 +1622,10 @@ void EntityItem::setParentID(const QUuid& value) { } } + if (!value.isNull() && (value == Physics::getSessionUUID() || value == AVATAR_SELF_ID)) { + newParentNoBootstrapping |= Simulation::NO_BOOTSTRAPPING; + } + if ((bool)(oldParentNoBootstrapping ^ newParentNoBootstrapping)) { if ((bool)(newParentNoBootstrapping & Simulation::NO_BOOTSTRAPPING)) { markDirtyFlags(Simulation::NO_BOOTSTRAPPING); From c329a58c1468363a592b9a59c6dddbccaa529b3d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 6 Dec 2017 11:26:34 -0800 Subject: [PATCH 261/329] ignore vcredist when performing fixup_bundle --- cmake/templates/FixupBundlePostBuild.cmake.in | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cmake/templates/FixupBundlePostBuild.cmake.in b/cmake/templates/FixupBundlePostBuild.cmake.in index d4726884c2..57379bb48b 100644 --- a/cmake/templates/FixupBundlePostBuild.cmake.in +++ b/cmake/templates/FixupBundlePostBuild.cmake.in @@ -45,5 +45,4 @@ else() endif() file(GLOB EXTRA_PLUGINS "${BUNDLE_PLUGIN_DIR}/*.${PLUGIN_EXTENSION}") -fixup_bundle("${BUNDLE_EXECUTABLE}" "${EXTRA_PLUGINS}" "@FIXUP_LIBS@") - +fixup_bundle("${BUNDLE_EXECUTABLE}" "${EXTRA_PLUGINS}" "@FIXUP_LIBS@" IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe") From 008b4285f5a2ca9e4f63c26a57861e3a4ba32586 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 6 Dec 2017 11:35:14 -0800 Subject: [PATCH 262/329] don't use cmake sys library install, grab vcredist as external --- cmake/externals/vcredist/CMakeLists.txt | 21 +++++++++++++++++++++ cmake/macros/GenerateInstallers.cmake | 5 ----- 2 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 cmake/externals/vcredist/CMakeLists.txt diff --git a/cmake/externals/vcredist/CMakeLists.txt b/cmake/externals/vcredist/CMakeLists.txt new file mode 100644 index 0000000000..ac242cf451 --- /dev/null +++ b/cmake/externals/vcredist/CMakeLists.txt @@ -0,0 +1,21 @@ +if (WIN32) + set(EXTERNAL_NAME vcredist) + string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) + + include(ExternalProject) + ExternalProject_Add( + ${EXTERNAL_NAME} + URL https://go.microsoft.com/fwlink/?LinkId=746572 + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + LOG_DOWNLOAD 1 + ) + + # Hide this external target (for ide users) + set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals") + + ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) + + set(${EXTERNAL_NAME_UPPER}_PATH ${SOURCE_DIR} CACHE FILEPATH "Location of VC Redistributable") +endif() diff --git a/cmake/macros/GenerateInstallers.cmake b/cmake/macros/GenerateInstallers.cmake index 6c131168d5..20ab32bf62 100644 --- a/cmake/macros/GenerateInstallers.cmake +++ b/cmake/macros/GenerateInstallers.cmake @@ -29,10 +29,6 @@ macro(GENERATE_INSTALLERS) if (WIN32) - # Do not install the Visual Studio C runtime libraries. The installer will do this automatically - set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE) - - include(InstallRequiredSystemLibraries) set(CPACK_NSIS_MUI_ICON "${HF_CMAKE_DIR}/installer/installer.ico") # install and reference the Add/Remove icon @@ -84,4 +80,3 @@ macro(GENERATE_INSTALLERS) include(CPack) endmacro() - From f3fc5769e85557ba3406e70b8b51c57d918d1472 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 28 Nov 2017 16:51:53 -0800 Subject: [PATCH 263/329] Move asset baking on asset server to separate process --- .../src/assets/BakeAssetTask.cpp | 69 +++++++++++++++++-- assignment-client/src/assets/BakeAssetTask.h | 2 + .../src/RenderableModelEntityItem.cpp | 2 +- tools/oven/CMakeLists.txt | 2 +- tools/oven/src/BakerCLI.cpp | 29 +++++--- tools/oven/src/BakerCLI.h | 12 +++- tools/oven/src/Oven.cpp | 7 +- tools/oven/src/ui/BakeWidget.h | 1 + 8 files changed, 105 insertions(+), 19 deletions(-) diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index 6c78d2baf3..ca96a0d36c 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -12,16 +12,23 @@ #include "BakeAssetTask.h" #include +#include #include #include #include +static const int OVEN_STATUS_CODE_SUCCESS { 0 }; +static const int OVEN_STATUS_CODE_FAIL { 1 }; +static const int OVEN_STATUS_CODE_ABORT { 2 }; + BakeAssetTask::BakeAssetTask(const AssetHash& assetHash, const AssetPath& assetPath, const QString& filePath) : _assetHash(assetHash), _assetPath(assetPath), _filePath(filePath) { + qRegisterMetaType("QProcess::ProcessError"); + qRegisterMetaType("QProcess::ExitStatus"); } @@ -43,22 +50,74 @@ void cleanupTempFiles(QString tempOutputDir, std::vector files) { void BakeAssetTask::run() { _isBaking.store(true); + QString tempOutputDir = PathUtils::generateTemporaryDir(); + _outputDir = tempOutputDir; + auto base = QFileInfo(QCoreApplication::applicationFilePath()).absoluteDir(); + QString path = base.absolutePath() + "/../../tools/oven/RelWithDebInfo/oven.exe"; + path = base.absolutePath() + "/../tools/oven/oven"; + //path = "C:/Users/huffm/dev/hifi/build17/tools/oven/RelWithDebInfo/oven.exe"; + QString extension = _assetPath.mid(_assetPath.lastIndexOf('.') + 1); + QStringList args { + "-i", _filePath, + "-o", tempOutputDir, + "-t", extension, + }; + + qDebug().noquote() << "Path: " << path << args.join(' '); + QProcess* proc = new QProcess(); + + connect(proc, static_cast(&QProcess::finished), + this, [this, proc, tempOutputDir](int exitCode, QProcess::ExitStatus exitStatus) { + qDebug() << "Finished process: " << exitCode << exitStatus; + qDebug() << "stdout: " << proc->readAllStandardOutput(); + + auto files = _outputDir.entryInfoList(QDir::Files); + QVector outputFiles; + for (auto& file : files) { + qDebug() << "Output file: " << file.absoluteFilePath(); + outputFiles.push_back(file.absoluteFilePath()); + } + + if (exitCode == OVEN_STATUS_CODE_SUCCESS) { + emit bakeComplete(_assetHash, _assetPath, tempOutputDir, outputFiles); + } else if (exitCode == OVEN_STATUS_CODE_ABORT) { + emit bakeAborted(_assetHash, _assetPath); + } else { + QString errors; + if (exitCode == OVEN_STATUS_CODE_FAIL) { + } + emit bakeFailed(_assetHash, _assetPath, errors); + } + + }); + connect(proc, &QProcess::errorOccurred, this, []() { + qDebug() << "Error occurred :("; + }); + connect(proc, &QProcess::started, this, []() { + qDebug() << "Process started"; + }); + + qDebug() << "Starting process!"; + proc->start(path, args, QIODevice::ReadOnly); + proc->waitForStarted(); + qDebug() << "Started"; + proc->waitForFinished(); + qDebug() << "Finished"; + + return; + qRegisterMetaType >("QVector"); TextureBakerThreadGetter fn = []() -> QThread* { return QThread::currentThread(); }; - QString tempOutputDir; - if (_assetPath.endsWith(".fbx")) { - tempOutputDir = PathUtils::generateTemporaryDir(); _baker = std::unique_ptr { new FBXBaker(QUrl("file:///" + _filePath), fn, tempOutputDir) }; } else if (_assetPath.endsWith(".js", Qt::CaseInsensitive)) { _baker = std::unique_ptr{ - new JSBaker(QUrl("file:///" + _filePath), PathUtils::generateTemporaryDir()) + new JSBaker(QUrl("file:///" + _filePath), tempOutputDir) }; } else { - tempOutputDir = PathUtils::generateTemporaryDir(); _baker = std::unique_ptr { new TextureBaker(QUrl("file:///" + _filePath), image::TextureUsage::CUBE_TEXTURE, tempOutputDir) diff --git a/assignment-client/src/assets/BakeAssetTask.h b/assignment-client/src/assets/BakeAssetTask.h index 90458ac223..48461bc1b3 100644 --- a/assignment-client/src/assets/BakeAssetTask.h +++ b/assignment-client/src/assets/BakeAssetTask.h @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -44,6 +45,7 @@ private: AssetHash _assetHash; AssetPath _assetPath; QString _filePath; + QDir _outputDir; std::unique_ptr _baker; std::atomic _wasAborted { false }; std::atomic _didFinish { false }; diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 06b81ff428..c992eb5dc4 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -1149,7 +1149,7 @@ bool ModelEntityRenderer::needsRenderUpdateFromTypedEntity(const TypedEntityPoin if (model && model->isLoaded()) { if (!entity->_dimensionsInitialized || entity->_needsInitialSimulation) { return true; - } + } // Check to see if we need to update the model bounds if (entity->needsUpdateModelBounds()) { diff --git a/tools/oven/CMakeLists.txt b/tools/oven/CMakeLists.txt index 1022c204c5..fd027c40fe 100644 --- a/tools/oven/CMakeLists.txt +++ b/tools/oven/CMakeLists.txt @@ -17,4 +17,4 @@ if (UNIX) endif() endif () -set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_DEFAULT_BUILD TRUE) +set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL FALSE EXCLUDE_FROM_DEFAULT_BUILD FALSE) diff --git a/tools/oven/src/BakerCLI.cpp b/tools/oven/src/BakerCLI.cpp index 5ab995be95..01276c34c8 100644 --- a/tools/oven/src/BakerCLI.cpp +++ b/tools/oven/src/BakerCLI.cpp @@ -22,22 +22,28 @@ BakerCLI::BakerCLI(Oven* parent) : QObject(parent) { } -void BakerCLI::bakeFile(QUrl inputUrl, const QString outputPath) { +void BakerCLI::bakeFile(QUrl inputUrl, const QString& outputPath, const QString& type) { // if the URL doesn't have a scheme, assume it is a local file if (inputUrl.scheme() != "http" && inputUrl.scheme() != "https" && inputUrl.scheme() != "ftp") { inputUrl.setScheme("file"); } - static const QString MODEL_EXTENSION { ".fbx" }; + qDebug() << "Type: " << type; + + static const QString MODEL_EXTENSION { "fbx" }; + + QString extension = type; + + if (extension.isNull()) { + auto url = inputUrl.toDisplayString(); + extension = url.mid(url.lastIndexOf('.')); + } // check what kind of baker we should be creating - bool isFBX = inputUrl.toDisplayString().endsWith(MODEL_EXTENSION, Qt::CaseInsensitive); - bool isSupportedImage = false; + bool isFBX = extension == MODEL_EXTENSION;//inputUrl.toDisplayString().endsWith(MODEL_EXTENSION, Qt::CaseInsensitive); - for (QByteArray format : QImageReader::supportedImageFormats()) { - isSupportedImage |= inputUrl.toDisplayString().endsWith(format, Qt::CaseInsensitive); - } + bool isSupportedImage = QImageReader::supportedImageFormats().contains(extension.toLatin1()); // create our appropiate baker if (isFBX) { @@ -60,5 +66,12 @@ void BakerCLI::bakeFile(QUrl inputUrl, const QString outputPath) { void BakerCLI::handleFinishedBaker() { qCDebug(model_baking) << "Finished baking file."; - QApplication::exit(_baker.get()->hasErrors()); + int exitCode = OVEN_STATUS_CODE_SUCCESS; + // Do we need this? + if (_baker.get()->wasAborted()) { + exitCode = OVEN_STATUS_CODE_ABORT; + } else if (_baker.get()->hasErrors()) { + exitCode = OVEN_STATUS_CODE_FAIL; + } + QApplication::exit(exitCode); } diff --git a/tools/oven/src/BakerCLI.h b/tools/oven/src/BakerCLI.h index cb2b908059..a6d96cab9b 100644 --- a/tools/oven/src/BakerCLI.h +++ b/tools/oven/src/BakerCLI.h @@ -14,15 +14,23 @@ #include +#include + #include "Baker.h" #include "Oven.h" +static const int OVEN_STATUS_CODE_SUCCESS { 0 }; +static const int OVEN_STATUS_CODE_FAIL { 1 }; +static const int OVEN_STATUS_CODE_ABORT { 2 }; + +static const QString OVEN_ERROR_FILENAME = "errors.txt"; + class BakerCLI : public QObject { Q_OBJECT public: BakerCLI(Oven* parent); - void bakeFile(QUrl inputUrl, const QString outputPath); + void bakeFile(QUrl inputUrl, const QString& outputPath, const QString& type = QString::null); private slots: void handleFinishedBaker(); @@ -31,4 +39,4 @@ private: std::unique_ptr _baker; }; -#endif // hifi_BakerCLI_h \ No newline at end of file +#endif // hifi_BakerCLI_h diff --git a/tools/oven/src/Oven.cpp b/tools/oven/src/Oven.cpp index d91206a592..9de06a35bb 100644 --- a/tools/oven/src/Oven.cpp +++ b/tools/oven/src/Oven.cpp @@ -24,6 +24,7 @@ static const QString OUTPUT_FOLDER = "/Users/birarda/code/hifi/lod/test-oven/exp static const QString CLI_INPUT_PARAMETER = "i"; static const QString CLI_OUTPUT_PARAMETER = "o"; +static const QString CLI_TYPE_PARAMETER = "t"; Oven::Oven(int argc, char* argv[]) : QApplication(argc, argv) @@ -39,7 +40,8 @@ Oven::Oven(int argc, char* argv[]) : parser.addOptions({ { CLI_INPUT_PARAMETER, "Path to file that you would like to bake.", "input" }, - { CLI_OUTPUT_PARAMETER, "Path to folder that will be used as output.", "output" } + { CLI_OUTPUT_PARAMETER, "Path to folder that will be used as output.", "output" }, + { CLI_TYPE_PARAMETER, "Type of asset.", "type" } }); parser.addHelpOption(); parser.process(*this); @@ -59,7 +61,8 @@ Oven::Oven(int argc, char* argv[]) : BakerCLI* cli = new BakerCLI(this); QUrl inputUrl(QDir::fromNativeSeparators(parser.value(CLI_INPUT_PARAMETER))); QUrl outputUrl(QDir::fromNativeSeparators(parser.value(CLI_OUTPUT_PARAMETER))); - cli->bakeFile(inputUrl, outputUrl.toString()); + QString type = parser.isSet(CLI_TYPE_PARAMETER) ? parser.value(CLI_TYPE_PARAMETER) : QString::null; + cli->bakeFile(inputUrl, outputUrl.toString(), type); } else { parser.showHelp(); QApplication::quit(); diff --git a/tools/oven/src/ui/BakeWidget.h b/tools/oven/src/ui/BakeWidget.h index 00996128ed..d71bd71252 100644 --- a/tools/oven/src/ui/BakeWidget.h +++ b/tools/oven/src/ui/BakeWidget.h @@ -13,6 +13,7 @@ #define hifi_BakeWidget_h #include +#include #include From 7eb93f47777701f670cc501865f7dd170a5ca915 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 5 Dec 2017 08:46:50 -0800 Subject: [PATCH 264/329] Add oven as dep to assignment-client --- assignment-client/CMakeLists.txt | 18 +++++++++++++++++- assignment-client/src/assets/BakeAssetTask.cpp | 4 +--- tools/oven/CMakeLists.txt | 2 ++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/assignment-client/CMakeLists.txt b/assignment-client/CMakeLists.txt index 0421195612..8e35186bd0 100644 --- a/assignment-client/CMakeLists.txt +++ b/assignment-client/CMakeLists.txt @@ -13,9 +13,25 @@ setup_memory_debugger() link_hifi_libraries( audio avatars octree gpu model fbx entities networking animation recording shared script-engine embedded-webserver - controllers physics plugins midi baking image + controllers physics plugins midi image baking ) +add_dependencies(${TARGET_NAME} oven) + +if (WIN32) + add_custom_command( + TARGET ${TARGET_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + $ + $) +else() + add_custom_command( + TARGET ${TARGET_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E create_symlink + $ + $/oven) +endif() + if (WIN32) package_libraries_for_deployment() endif() diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index ca96a0d36c..bb0c344a1f 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -53,9 +53,7 @@ void BakeAssetTask::run() { QString tempOutputDir = PathUtils::generateTemporaryDir(); _outputDir = tempOutputDir; auto base = QFileInfo(QCoreApplication::applicationFilePath()).absoluteDir(); - QString path = base.absolutePath() + "/../../tools/oven/RelWithDebInfo/oven.exe"; - path = base.absolutePath() + "/../tools/oven/oven"; - //path = "C:/Users/huffm/dev/hifi/build17/tools/oven/RelWithDebInfo/oven.exe"; + QString path = base.absolutePath() + "/oven"; QString extension = _assetPath.mid(_assetPath.lastIndexOf('.') + 1); QStringList args { "-i", _filePath, diff --git a/tools/oven/CMakeLists.txt b/tools/oven/CMakeLists.txt index fd027c40fe..5f8f2c9542 100644 --- a/tools/oven/CMakeLists.txt +++ b/tools/oven/CMakeLists.txt @@ -18,3 +18,5 @@ if (UNIX) endif () set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL FALSE EXCLUDE_FROM_DEFAULT_BUILD FALSE) + +install_beside_console() From de7e3e60cd4f712484399eead07e9087c3a52e43 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 5 Dec 2017 08:48:05 -0800 Subject: [PATCH 265/329] Add temp dir removal to asset server --- assignment-client/src/assets/AssetServer.cpp | 3 ++ libraries/shared/src/PathUtils.cpp | 47 ++++++++++++++++++++ libraries/shared/src/PathUtils.h | 2 + libraries/shared/src/SharedUtil.cpp | 20 +++++++++ libraries/shared/src/SharedUtil.h | 2 + 5 files changed, 74 insertions(+) diff --git a/assignment-client/src/assets/AssetServer.cpp b/assignment-client/src/assets/AssetServer.cpp index ca0f222e0c..b24e38fd13 100644 --- a/assignment-client/src/assets/AssetServer.cpp +++ b/assignment-client/src/assets/AssetServer.cpp @@ -416,6 +416,9 @@ void AssetServer::completeSetup() { if (assetsFilesizeLimit != 0 && assetsFilesizeLimit < MAX_UPLOAD_SIZE) { _filesizeLimit = assetsFilesizeLimit * BITS_PER_MEGABITS; } + + PathUtils::removeTemporaryDirs(); + PathUtils::removeTemporaryDirs("Oven"); } void AssetServer::cleanupUnmappedFiles() { diff --git a/libraries/shared/src/PathUtils.cpp b/libraries/shared/src/PathUtils.cpp index 46613f1283..acf053aaed 100644 --- a/libraries/shared/src/PathUtils.cpp +++ b/libraries/shared/src/PathUtils.cpp @@ -19,8 +19,14 @@ #include #include #include +#include #include // std::once #include "shared/GlobalAppProperties.h" +#include "SharedUtil.h" + +// Format: AppName-PID-Timestamp +// Example: ... +QString TEMP_DIR_FORMAT { "%1-%2-%3" }; const QString& PathUtils::resourcesPath() { #ifdef Q_OS_MAC @@ -60,6 +66,7 @@ QString PathUtils::generateTemporaryDir() { QString appName = qApp->applicationName(); for (auto i = 0; i < 64; ++i) { auto now = std::chrono::system_clock::now().time_since_epoch().count(); + auto dirName = TEMP_DIR_FORMAT.arg(appName).arg(qApp->applicationPid()).arg(now); QDir tempDir = rootTempDir.filePath(appName + "-" + QString::number(now)); if (tempDir.mkpath(".")) { return tempDir.absolutePath(); @@ -68,6 +75,46 @@ QString PathUtils::generateTemporaryDir() { return ""; } +// Delete all temporary directories for an application +int PathUtils::removeTemporaryDirs(QString appName) { + if (appName.isNull()) { + appName = qApp->applicationName(); + } + + auto dirName = TEMP_DIR_FORMAT.arg(appName).arg("*").arg("*"); + qDebug() << "Dirname format is: " << dirName; + + QDir rootTempDir = QDir::tempPath(); + qDebug() << "Temp dir is: " << rootTempDir; + auto dirs = rootTempDir.entryInfoList({ dirName }, QDir::Dirs); + int removed = 0; + for (auto& dir : dirs) { + auto dirName = dir.fileName(); + auto absoluteDirPath = QDir(dir.absoluteFilePath()); + qDebug() << " Deleting: " << dirName << absoluteDirPath; + QRegularExpression re { "^" + QRegularExpression::escape(appName) + "\\-(?\\d+)\\-(?\\d+)$" }; + + auto match = re.match(dirName); + if (match.hasMatch()) { + qDebug() << " Got match"; + auto pid = match.capturedRef("pid").toLongLong(); + auto timestamp = match.capturedRef("timestamp"); + qDebug() << " Is " << pid << " running?" << processIsRunning(pid); + if (!processIsRunning(pid)) { + qDebug() << " Removing: " << absoluteDirPath; + absoluteDirPath.removeRecursively(); + removed++; + } else { + qDebug() << " Not removing (process is running): " << dir.absoluteDir(); + } + } else { + qDebug() << " NO MATCH"; + } + } + + return removed; +} + QString fileNameWithoutExtension(const QString& fileName, const QVector possibleExtensions) { QString fileNameLowered = fileName.toLower(); foreach (const QString possibleExtension, possibleExtensions) { diff --git a/libraries/shared/src/PathUtils.h b/libraries/shared/src/PathUtils.h index 8c4bcf2394..184c62ad6f 100644 --- a/libraries/shared/src/PathUtils.h +++ b/libraries/shared/src/PathUtils.h @@ -39,6 +39,8 @@ public: static QString generateTemporaryDir(); + static int removeTemporaryDirs(QString appName = QString::null); + static Qt::CaseSensitivity getFSCaseSensitivity(); static QString stripFilename(const QUrl& url); // note: this is FS-case-sensitive version of parentURL.isParentOf(childURL) diff --git a/libraries/shared/src/SharedUtil.cpp b/libraries/shared/src/SharedUtil.cpp index 38a7a3165f..294546d1f0 100644 --- a/libraries/shared/src/SharedUtil.cpp +++ b/libraries/shared/src/SharedUtil.cpp @@ -44,6 +44,11 @@ extern "C" FILE * __cdecl __iob_func(void) { #include #endif + +#if defined(Q_OS_LINUX) || defined(__APPLE__) +#include +#endif + #include #include #include @@ -1078,6 +1083,21 @@ void setMaxCores(uint8_t maxCores) { #endif } +bool processIsRunning(int64_t pid) { +#ifdef Q_OS_WIN + HANDLE process = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid); + if (process) { + DWORD exitCodeOut; + if (GetExitCodeProcess(process, &exitCodeOut) != 0) { + return exitCodeOut == STILL_ACTIVE; + } + } + return false; +#elif defined(Q_OS_LINUX) || defined(__APPLE__) + return kill(pid, 0) != ESRCH; +#endif +} + void quitWithParentProcess() { if (qApp) { qDebug() << "Parent process died, quitting"; diff --git a/libraries/shared/src/SharedUtil.h b/libraries/shared/src/SharedUtil.h index 25051d45ac..6cf5a4755d 100644 --- a/libraries/shared/src/SharedUtil.h +++ b/libraries/shared/src/SharedUtil.h @@ -238,6 +238,8 @@ void setMaxCores(uint8_t maxCores); const QString PARENT_PID_OPTION = "parent-pid"; void watchParentProcess(int parentPID); +bool processIsRunning(int64_t pid); + #ifdef Q_OS_WIN void* createProcessGroup(); From bee666b522d21d8be260c8ab71f22a9fb7077c1e Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 5 Dec 2017 09:10:08 -0800 Subject: [PATCH 266/329] Add error text reading to asset server baking --- assignment-client/src/assets/BakeAssetTask.cpp | 14 +++++++++++--- tools/oven/src/BakerCLI.cpp | 12 ++++++++++-- tools/oven/src/BakerCLI.h | 2 ++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index bb0c344a1f..9a22b065fa 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -77,12 +77,23 @@ void BakeAssetTask::run() { } if (exitCode == OVEN_STATUS_CODE_SUCCESS) { + _didFinish.store(true); emit bakeComplete(_assetHash, _assetPath, tempOutputDir, outputFiles); } else if (exitCode == OVEN_STATUS_CODE_ABORT) { + _wasAborted.store(true); emit bakeAborted(_assetHash, _assetPath); } else { QString errors; if (exitCode == OVEN_STATUS_CODE_FAIL) { + _didFinish.store(true); + auto errorFilePath = _outputDir.absoluteFilePath("errors.txt"); + QFile errorFile { errorFilePath }; + if (errorFile.open(QIODevice::ReadOnly)) { + errors = errorFile.readAll(); + errorFile.close(); + } else { + errors = "Unknown error occurred"; + } } emit bakeFailed(_assetHash, _assetPath, errors); } @@ -95,12 +106,9 @@ void BakeAssetTask::run() { qDebug() << "Process started"; }); - qDebug() << "Starting process!"; proc->start(path, args, QIODevice::ReadOnly); proc->waitForStarted(); - qDebug() << "Started"; proc->waitForFinished(); - qDebug() << "Finished"; return; diff --git a/tools/oven/src/BakerCLI.cpp b/tools/oven/src/BakerCLI.cpp index 01276c34c8..e28d914e47 100644 --- a/tools/oven/src/BakerCLI.cpp +++ b/tools/oven/src/BakerCLI.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include "ModelBakingLoggingCategory.h" #include "Oven.h" @@ -45,6 +46,8 @@ void BakerCLI::bakeFile(QUrl inputUrl, const QString& outputPath, const QString& bool isSupportedImage = QImageReader::supportedImageFormats().contains(extension.toLatin1()); + _outputPath = outputPath; + // create our appropiate baker if (isFBX) { _baker = std::unique_ptr { new FBXBaker(inputUrl, []() -> QThread* { return qApp->getNextWorkerThread(); }, outputPath) }; @@ -68,10 +71,15 @@ void BakerCLI::handleFinishedBaker() { qCDebug(model_baking) << "Finished baking file."; int exitCode = OVEN_STATUS_CODE_SUCCESS; // Do we need this? - if (_baker.get()->wasAborted()) { + if (_baker->wasAborted()) { exitCode = OVEN_STATUS_CODE_ABORT; - } else if (_baker.get()->hasErrors()) { + } else if (_baker->hasErrors()) { exitCode = OVEN_STATUS_CODE_FAIL; + QFile errorFile { _outputPath.absoluteFilePath("errors.txt") }; + if (errorFile.open(QFile::WriteOnly)) { + errorFile.write(_baker->getErrors().join('\n').toUtf8()); + errorFile.close(); + } } QApplication::exit(exitCode); } diff --git a/tools/oven/src/BakerCLI.h b/tools/oven/src/BakerCLI.h index a6d96cab9b..7d362eb898 100644 --- a/tools/oven/src/BakerCLI.h +++ b/tools/oven/src/BakerCLI.h @@ -13,6 +13,7 @@ #define hifi_BakerCLI_h #include +#include #include @@ -36,6 +37,7 @@ private slots: void handleFinishedBaker(); private: + QDir _outputPath; std::unique_ptr _baker; }; From f20aa2e6803ac207580443162e67d3405227037e Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 6 Dec 2017 11:28:06 -0800 Subject: [PATCH 267/329] Fix asset server baking not working on *nix --- .../src/assets/BakeAssetTask.cpp | 112 +++++------------- assignment-client/src/assets/BakeAssetTask.h | 4 +- libraries/shared/src/PathUtils.cpp | 11 +- libraries/shared/src/SharedUtil.cpp | 8 +- 4 files changed, 40 insertions(+), 95 deletions(-) diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index 9a22b065fa..a2fbd5fef4 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -12,11 +12,9 @@ #include "BakeAssetTask.h" #include -#include +#include -#include #include -#include static const int OVEN_STATUS_CODE_SUCCESS { 0 }; static const int OVEN_STATUS_CODE_FAIL { 1 }; @@ -48,7 +46,10 @@ void cleanupTempFiles(QString tempOutputDir, std::vector files) { }; void BakeAssetTask::run() { - _isBaking.store(true); + if (_isBaking.exchange(true)) { + qWarning() << "Tried to start bake asset task while already baking"; + return; + } QString tempOutputDir = PathUtils::generateTemporaryDir(); _outputDir = tempOutputDir; @@ -61,25 +62,27 @@ void BakeAssetTask::run() { "-t", extension, }; - qDebug().noquote() << "Path: " << path << args.join(' '); - QProcess* proc = new QProcess(); + auto _ovenProcess = new QProcess(this); - connect(proc, static_cast(&QProcess::finished), - this, [this, proc, tempOutputDir](int exitCode, QProcess::ExitStatus exitStatus) { - qDebug() << "Finished process: " << exitCode << exitStatus; - qDebug() << "stdout: " << proc->readAllStandardOutput(); + connect(_ovenProcess, static_cast(&QProcess::finished), + this, [this, tempOutputDir](int exitCode, QProcess::ExitStatus exitStatus) { + qDebug() << "Baking process finished: " << exitCode << exitStatus; - auto files = _outputDir.entryInfoList(QDir::Files); - QVector outputFiles; - for (auto& file : files) { - qDebug() << "Output file: " << file.absoluteFilePath(); - outputFiles.push_back(file.absoluteFilePath()); - } + if (exitStatus == QProcess::CrashExit) { + _didFinish.store(true); + QString errors = "Fatal error occurred while baking"; + emit bakeFailed(_assetHash, _assetPath, errors); + } else if (exitCode == OVEN_STATUS_CODE_SUCCESS) { + auto files = _outputDir.entryInfoList(QDir::Files); + QVector outputFiles; + for (auto& file : files) { + qDebug() << " Output file: " << file.absoluteFilePath(); + outputFiles.push_back(file.absoluteFilePath()); + } - if (exitCode == OVEN_STATUS_CODE_SUCCESS) { _didFinish.store(true); emit bakeComplete(_assetHash, _assetPath, tempOutputDir, outputFiles); - } else if (exitCode == OVEN_STATUS_CODE_ABORT) { + } else if (exitStatus == QProcess::NormalExit && exitCode == OVEN_STATUS_CODE_ABORT) { _wasAborted.store(true); emit bakeAborted(_assetHash, _assetPath); } else { @@ -92,81 +95,22 @@ void BakeAssetTask::run() { errors = errorFile.readAll(); errorFile.close(); } else { - errors = "Unknown error occurred"; + errors = "Unknown error occurred while baking"; } } emit bakeFailed(_assetHash, _assetPath, errors); } }); - connect(proc, &QProcess::errorOccurred, this, []() { - qDebug() << "Error occurred :("; - }); - connect(proc, &QProcess::started, this, []() { - qDebug() << "Process started"; - }); - proc->start(path, args, QIODevice::ReadOnly); - proc->waitForStarted(); - proc->waitForFinished(); - - return; - - qRegisterMetaType >("QVector"); - TextureBakerThreadGetter fn = []() -> QThread* { return QThread::currentThread(); }; - - if (_assetPath.endsWith(".fbx")) { - _baker = std::unique_ptr { - new FBXBaker(QUrl("file:///" + _filePath), fn, tempOutputDir) - }; - } else if (_assetPath.endsWith(".js", Qt::CaseInsensitive)) { - _baker = std::unique_ptr{ - new JSBaker(QUrl("file:///" + _filePath), tempOutputDir) - }; - } else { - _baker = std::unique_ptr { - new TextureBaker(QUrl("file:///" + _filePath), image::TextureUsage::CUBE_TEXTURE, - tempOutputDir) - }; - } - - QEventLoop loop; - connect(_baker.get(), &Baker::finished, &loop, &QEventLoop::quit); - connect(_baker.get(), &Baker::aborted, &loop, &QEventLoop::quit); - QMetaObject::invokeMethod(_baker.get(), "bake", Qt::QueuedConnection); - loop.exec(); - - if (_baker->wasAborted()) { - qDebug() << "Aborted baking: " << _assetHash << _assetPath; - - _wasAborted.store(true); - - cleanupTempFiles(tempOutputDir, _baker->getOutputFiles()); - - emit bakeAborted(_assetHash, _assetPath); - } else if (_baker->hasErrors()) { - qDebug() << "Failed to bake: " << _assetHash << _assetPath << _baker->getErrors(); - - auto errors = _baker->getErrors().join('\n'); // Join error list into a single string for convenience - - _didFinish.store(true); - - cleanupTempFiles(tempOutputDir, _baker->getOutputFiles()); - - emit bakeFailed(_assetHash, _assetPath, errors); - } else { - auto vectorOutputFiles = QVector::fromStdVector(_baker->getOutputFiles()); - - qDebug() << "Finished baking: " << _assetHash << _assetPath << vectorOutputFiles; - - _didFinish.store(true); - - emit bakeComplete(_assetHash, _assetPath, tempOutputDir, vectorOutputFiles); - } + qDebug() << "Starting oven for " << _assetPath; + _ovenProcess->start(path, args, QIODevice::ReadOnly); + _ovenProcess->waitForStarted(); + _ovenProcess->waitForFinished(); } void BakeAssetTask::abort() { - if (_baker) { - _baker->abort(); + if (!_wasAborted.exchange(true)) { + _ovenProcess.terminate(); } } diff --git a/assignment-client/src/assets/BakeAssetTask.h b/assignment-client/src/assets/BakeAssetTask.h index 48461bc1b3..970ea83317 100644 --- a/assignment-client/src/assets/BakeAssetTask.h +++ b/assignment-client/src/assets/BakeAssetTask.h @@ -18,9 +18,9 @@ #include #include #include +#include #include -#include class BakeAssetTask : public QObject, public QRunnable { Q_OBJECT @@ -46,7 +46,7 @@ private: AssetPath _assetPath; QString _filePath; QDir _outputDir; - std::unique_ptr _baker; + QProcess _ovenProcess { nullptr }; std::atomic _wasAborted { false }; std::atomic _didFinish { false }; }; diff --git a/libraries/shared/src/PathUtils.cpp b/libraries/shared/src/PathUtils.cpp index acf053aaed..2e1b526463 100644 --- a/libraries/shared/src/PathUtils.cpp +++ b/libraries/shared/src/PathUtils.cpp @@ -67,7 +67,7 @@ QString PathUtils::generateTemporaryDir() { for (auto i = 0; i < 64; ++i) { auto now = std::chrono::system_clock::now().time_since_epoch().count(); auto dirName = TEMP_DIR_FORMAT.arg(appName).arg(qApp->applicationPid()).arg(now); - QDir tempDir = rootTempDir.filePath(appName + "-" + QString::number(now)); + QDir tempDir = rootTempDir.filePath(dirName); if (tempDir.mkpath(".")) { return tempDir.absolutePath(); } @@ -83,32 +83,27 @@ int PathUtils::removeTemporaryDirs(QString appName) { auto dirName = TEMP_DIR_FORMAT.arg(appName).arg("*").arg("*"); qDebug() << "Dirname format is: " << dirName; + auto pid = qApp->applicationPid(); QDir rootTempDir = QDir::tempPath(); - qDebug() << "Temp dir is: " << rootTempDir; auto dirs = rootTempDir.entryInfoList({ dirName }, QDir::Dirs); int removed = 0; for (auto& dir : dirs) { auto dirName = dir.fileName(); auto absoluteDirPath = QDir(dir.absoluteFilePath()); - qDebug() << " Deleting: " << dirName << absoluteDirPath; QRegularExpression re { "^" + QRegularExpression::escape(appName) + "\\-(?\\d+)\\-(?\\d+)$" }; auto match = re.match(dirName); if (match.hasMatch()) { - qDebug() << " Got match"; auto pid = match.capturedRef("pid").toLongLong(); auto timestamp = match.capturedRef("timestamp"); - qDebug() << " Is " << pid << " running?" << processIsRunning(pid); if (!processIsRunning(pid)) { - qDebug() << " Removing: " << absoluteDirPath; + qDebug() << " Removing old temporary directory: " << absoluteDirPath; absoluteDirPath.removeRecursively(); removed++; } else { qDebug() << " Not removing (process is running): " << dir.absoluteDir(); } - } else { - qDebug() << " NO MATCH"; } } diff --git a/libraries/shared/src/SharedUtil.cpp b/libraries/shared/src/SharedUtil.cpp index 294546d1f0..7ca915b0d0 100644 --- a/libraries/shared/src/SharedUtil.cpp +++ b/libraries/shared/src/SharedUtil.cpp @@ -47,6 +47,7 @@ extern "C" FILE * __cdecl __iob_func(void) { #if defined(Q_OS_LINUX) || defined(__APPLE__) #include +#include #endif #include @@ -1094,7 +1095,12 @@ bool processIsRunning(int64_t pid) { } return false; #elif defined(Q_OS_LINUX) || defined(__APPLE__) - return kill(pid, 0) != ESRCH; + if (kill(pid, 0) == -1) { + return errno != ESRCH; + } + return true; +#else + static_assert(false); #endif } From 99b5b8942a24a3c94bac4f9719beda03b04e013f Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 6 Dec 2017 12:08:18 -0800 Subject: [PATCH 268/329] add file download command to install step --- cmake/externals/vcredist/CMakeLists.txt | 21 --------------------- cmake/macros/GenerateInstallers.cmake | 4 ++++ 2 files changed, 4 insertions(+), 21 deletions(-) delete mode 100644 cmake/externals/vcredist/CMakeLists.txt diff --git a/cmake/externals/vcredist/CMakeLists.txt b/cmake/externals/vcredist/CMakeLists.txt deleted file mode 100644 index ac242cf451..0000000000 --- a/cmake/externals/vcredist/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -if (WIN32) - set(EXTERNAL_NAME vcredist) - string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) - - include(ExternalProject) - ExternalProject_Add( - ${EXTERNAL_NAME} - URL https://go.microsoft.com/fwlink/?LinkId=746572 - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - LOG_DOWNLOAD 1 - ) - - # Hide this external target (for ide users) - set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals") - - ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) - - set(${EXTERNAL_NAME_UPPER}_PATH ${SOURCE_DIR} CACHE FILEPATH "Location of VC Redistributable") -endif() diff --git a/cmake/macros/GenerateInstallers.cmake b/cmake/macros/GenerateInstallers.cmake index 20ab32bf62..702636dd01 100644 --- a/cmake/macros/GenerateInstallers.cmake +++ b/cmake/macros/GenerateInstallers.cmake @@ -45,6 +45,10 @@ macro(GENERATE_INSTALLERS) set(_UNINSTALLER_HEADER_BAD_PATH "${HF_CMAKE_DIR}/installer/uninstaller-header.bmp") set(UNINSTALLER_HEADER_IMAGE "") fix_path_for_nsis(${_UNINSTALLER_HEADER_BAD_PATH} UNINSTALLER_HEADER_IMAGE) + + # grab the latest VC redist (2017) and add it to the installer, our NSIS template + # will call it during the install + install(CODE "file(DOWNLOAD https://go.microsoft.com/fwlink/?LinkId=746572 \"\${CMAKE_INSTALL_PREFIX}/vcredist_x64.exe\")") elseif (APPLE) # produce a drag and drop DMG on OS X set(CPACK_GENERATOR "DragNDrop") From cb9a30413da596f1b9e86cb4defd7809b70c61c0 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 6 Dec 2017 12:50:20 -0800 Subject: [PATCH 269/329] Rename removeTemporaryDis to removeTemporaryApplicationDirs --- assignment-client/src/assets/AssetServer.cpp | 4 ++-- libraries/shared/src/PathUtils.cpp | 2 +- libraries/shared/src/PathUtils.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assignment-client/src/assets/AssetServer.cpp b/assignment-client/src/assets/AssetServer.cpp index b24e38fd13..e9cd2cbbd7 100644 --- a/assignment-client/src/assets/AssetServer.cpp +++ b/assignment-client/src/assets/AssetServer.cpp @@ -417,8 +417,8 @@ void AssetServer::completeSetup() { _filesizeLimit = assetsFilesizeLimit * BITS_PER_MEGABITS; } - PathUtils::removeTemporaryDirs(); - PathUtils::removeTemporaryDirs("Oven"); + PathUtils::removeTemporaryApplicationDirs(); + PathUtils::removeTemporaryApplicationDirs("Oven"); } void AssetServer::cleanupUnmappedFiles() { diff --git a/libraries/shared/src/PathUtils.cpp b/libraries/shared/src/PathUtils.cpp index 2e1b526463..5c32e746b5 100644 --- a/libraries/shared/src/PathUtils.cpp +++ b/libraries/shared/src/PathUtils.cpp @@ -76,7 +76,7 @@ QString PathUtils::generateTemporaryDir() { } // Delete all temporary directories for an application -int PathUtils::removeTemporaryDirs(QString appName) { +int PathUtils::removeTemporaryApplicationDirs(QString appName) { if (appName.isNull()) { appName = qApp->applicationName(); } diff --git a/libraries/shared/src/PathUtils.h b/libraries/shared/src/PathUtils.h index 184c62ad6f..f3ba5910c4 100644 --- a/libraries/shared/src/PathUtils.h +++ b/libraries/shared/src/PathUtils.h @@ -39,7 +39,7 @@ public: static QString generateTemporaryDir(); - static int removeTemporaryDirs(QString appName = QString::null); + static int removeTemporaryApplicationDirs(QString appName = QString::null); static Qt::CaseSensitivity getFSCaseSensitivity(); static QString stripFilename(const QUrl& url); From 5f3b148baaefd327890504c11d584373633da317 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 6 Dec 2017 13:01:23 -0800 Subject: [PATCH 270/329] Fix marketplace icon incorrectly appearing active --- scripts/system/marketplaces/marketplaces.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js index 1893c2d097..80ef79a543 100644 --- a/scripts/system/marketplaces/marketplaces.js +++ b/scripts/system/marketplaces/marketplaces.js @@ -112,8 +112,8 @@ onMarketplaceScreen = type === "Web" && url.indexOf(MARKETPLACE_URL) !== -1; onWalletScreen = url.indexOf(MARKETPLACE_WALLET_QML_PATH) !== -1; onCommerceScreen = type === "QML" && (url.indexOf(MARKETPLACE_CHECKOUT_QML_PATH_BASE) !== -1 || url === MARKETPLACE_PURCHASES_QML_PATH - || url.indexOf(MARKETPLACE_INSPECTIONCERTIFICATE_QML_PATH) !== -1 || onWalletScreen); - wireEventBridge(onMarketplaceScreen || onCommerceScreen); + || url.indexOf(MARKETPLACE_INSPECTIONCERTIFICATE_QML_PATH) !== -1); + wireEventBridge(onMarketplaceScreen || onCommerceScreen || onWalletScreen); if (url === MARKETPLACE_PURCHASES_QML_PATH) { tablet.sendToQml({ From 6b098bfc6a804b465d398b246b1a0ea7145ad131 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 6 Dec 2017 13:51:31 -0800 Subject: [PATCH 271/329] Fix aborted baking in oven cli --- assignment-client/src/assets/AssetServer.cpp | 4 ++-- assignment-client/src/assets/BakeAssetTask.cpp | 16 ++++++++++------ assignment-client/src/assets/BakeAssetTask.h | 2 +- libraries/shared/src/SharedUtil.cpp | 12 +++++------- tools/oven/src/BakerCLI.cpp | 4 ++-- 5 files changed, 20 insertions(+), 18 deletions(-) diff --git a/assignment-client/src/assets/AssetServer.cpp b/assignment-client/src/assets/AssetServer.cpp index e9cd2cbbd7..98c29b02bb 100644 --- a/assignment-client/src/assets/AssetServer.cpp +++ b/assignment-client/src/assets/AssetServer.cpp @@ -29,11 +29,11 @@ #include #include -#include -#include #include #include #include +#include +#include #include "AssetServerLogging.h" #include "BakeAssetTask.h" diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index a2fbd5fef4..58983f4660 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -62,16 +62,20 @@ void BakeAssetTask::run() { "-t", extension, }; - auto _ovenProcess = new QProcess(this); + _ovenProcess.reset(new QProcess()); - connect(_ovenProcess, static_cast(&QProcess::finished), + connect(_ovenProcess.get(), static_cast(&QProcess::finished), this, [this, tempOutputDir](int exitCode, QProcess::ExitStatus exitStatus) { qDebug() << "Baking process finished: " << exitCode << exitStatus; if (exitStatus == QProcess::CrashExit) { - _didFinish.store(true); - QString errors = "Fatal error occurred while baking"; - emit bakeFailed(_assetHash, _assetPath, errors); + if (_wasAborted) { + emit bakeAborted(_assetHash, _assetPath); + } else { + _didFinish.store(true); + QString errors = "Fatal error occurred while baking"; + emit bakeFailed(_assetHash, _assetPath, errors); + } } else if (exitCode == OVEN_STATUS_CODE_SUCCESS) { auto files = _outputDir.entryInfoList(QDir::Files); QVector outputFiles; @@ -111,6 +115,6 @@ void BakeAssetTask::run() { void BakeAssetTask::abort() { if (!_wasAborted.exchange(true)) { - _ovenProcess.terminate(); + _ovenProcess->terminate(); } } diff --git a/assignment-client/src/assets/BakeAssetTask.h b/assignment-client/src/assets/BakeAssetTask.h index 970ea83317..d6c2446df5 100644 --- a/assignment-client/src/assets/BakeAssetTask.h +++ b/assignment-client/src/assets/BakeAssetTask.h @@ -46,7 +46,7 @@ private: AssetPath _assetPath; QString _filePath; QDir _outputDir; - QProcess _ovenProcess { nullptr }; + std::unique_ptr _ovenProcess { nullptr }; std::atomic _wasAborted { false }; std::atomic _didFinish { false }; }; diff --git a/libraries/shared/src/SharedUtil.cpp b/libraries/shared/src/SharedUtil.cpp index 7ca915b0d0..2d2ec7c28f 100644 --- a/libraries/shared/src/SharedUtil.cpp +++ b/libraries/shared/src/SharedUtil.cpp @@ -45,7 +45,7 @@ extern "C" FILE * __cdecl __iob_func(void) { #endif -#if defined(Q_OS_LINUX) || defined(__APPLE__) +#if defined(Q_OS_LINUX) || defined(Q_OS_MAC) #include #include #endif @@ -1088,19 +1088,17 @@ bool processIsRunning(int64_t pid) { #ifdef Q_OS_WIN HANDLE process = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid); if (process) { - DWORD exitCodeOut; - if (GetExitCodeProcess(process, &exitCodeOut) != 0) { - return exitCodeOut == STILL_ACTIVE; + DWORD exitCode; + if (GetExitCodeProcess(process, &exitCode) != 0) { + return exitCode == STILL_ACTIVE; } } return false; -#elif defined(Q_OS_LINUX) || defined(__APPLE__) +#else if (kill(pid, 0) == -1) { return errno != ESRCH; } return true; -#else - static_assert(false); #endif } diff --git a/tools/oven/src/BakerCLI.cpp b/tools/oven/src/BakerCLI.cpp index e28d914e47..eee92d7295 100644 --- a/tools/oven/src/BakerCLI.cpp +++ b/tools/oven/src/BakerCLI.cpp @@ -30,7 +30,7 @@ void BakerCLI::bakeFile(QUrl inputUrl, const QString& outputPath, const QString& inputUrl.setScheme("file"); } - qDebug() << "Type: " << type; + qDebug() << "Baking file type: " << type; static const QString MODEL_EXTENSION { "fbx" }; @@ -57,7 +57,7 @@ void BakerCLI::bakeFile(QUrl inputUrl, const QString& outputPath, const QString& _baker->moveToThread(qApp->getNextWorkerThread()); } else { qCDebug(model_baking) << "Failed to determine baker type for file" << inputUrl; - QApplication::exit(1); + QApplication::exit(OVEN_STATUS_CODE_FAIL); } // invoke the bake method on the baker thread From 2eecb4133777d88d7847ec236e201d6d77449661 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 6 Dec 2017 13:59:46 -0800 Subject: [PATCH 272/329] Update metatype registration in assetBakeTask --- assignment-client/src/assets/BakeAssetTask.cpp | 10 ++++++++-- libraries/shared/src/PathUtils.cpp | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index 58983f4660..427f41c494 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -11,6 +11,8 @@ #include "BakeAssetTask.h" +#include + #include #include @@ -20,14 +22,18 @@ static const int OVEN_STATUS_CODE_SUCCESS { 0 }; static const int OVEN_STATUS_CODE_FAIL { 1 }; static const int OVEN_STATUS_CODE_ABORT { 2 }; +std::once_flag registerMetaTypesFlag; + BakeAssetTask::BakeAssetTask(const AssetHash& assetHash, const AssetPath& assetPath, const QString& filePath) : _assetHash(assetHash), _assetPath(assetPath), _filePath(filePath) { - qRegisterMetaType("QProcess::ProcessError"); - qRegisterMetaType("QProcess::ExitStatus"); + std::call_once(registerMetaTypesFlag, []() { + qRegisterMetaType("QProcess::ProcessError"); + qRegisterMetaType("QProcess::ExitStatus"); + }); } void cleanupTempFiles(QString tempOutputDir, std::vector files) { diff --git a/libraries/shared/src/PathUtils.cpp b/libraries/shared/src/PathUtils.cpp index 5c32e746b5..4ec35e491e 100644 --- a/libraries/shared/src/PathUtils.cpp +++ b/libraries/shared/src/PathUtils.cpp @@ -98,11 +98,11 @@ int PathUtils::removeTemporaryApplicationDirs(QString appName) { auto pid = match.capturedRef("pid").toLongLong(); auto timestamp = match.capturedRef("timestamp"); if (!processIsRunning(pid)) { - qDebug() << " Removing old temporary directory: " << absoluteDirPath; + qDebug() << " Removing old temporary directory: " << dir.absoluteFilePath(); absoluteDirPath.removeRecursively(); removed++; } else { - qDebug() << " Not removing (process is running): " << dir.absoluteDir(); + qDebug() << " Not removing (process is running): " << dir.absoluteFilePath(); } } } From 32fca16c8579badef6036ceb633547360848a384 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Wed, 6 Dec 2017 14:16:32 -0800 Subject: [PATCH 273/329] fix radius equiping --- .../controllers/controllerModules/equipEntity.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/system/controllers/controllerModules/equipEntity.js b/scripts/system/controllers/controllerModules/equipEntity.js index 7edeae0a53..a250f77b2e 100644 --- a/scripts/system/controllers/controllerModules/equipEntity.js +++ b/scripts/system/controllers/controllerModules/equipEntity.js @@ -138,9 +138,9 @@ EquipHotspotBuddy.prototype.update = function(deltaTime, timestamp, controllerDa var dimensions; if (overlayInfoSet.type === "sphere") { - dimensions = overlayInfoSet.hotspot.radius * 2 * overlayInfoSet.currentSize * EQUIP_SPHERE_SCALE_FACTOR; + dimensions = (overlayInfoSet.hotspot.radius / 2) * overlayInfoSet.currentSize * EQUIP_SPHERE_SCALE_FACTOR; } else { - dimensions = overlayInfoSet.hotspot.radius * 2 * overlayInfoSet.currentSize; + dimensions = (overlayInfoSet.hotspot.radius / 2) * overlayInfoSet.currentSize; } overlayInfoSet.overlays.forEach(function(overlay) { @@ -162,7 +162,7 @@ EquipHotspotBuddy.prototype.update = function(deltaTime, timestamp, controllerDa var ATTACH_POINT_SETTINGS = "io.highfidelity.attachPoints"; - var EQUIP_RADIUS = 0.25; // radius used for palm vs equip-hotspot for equipping. + var EQUIP_RADIUS = 1.0; // radius used for palm vs equip-hotspot for equipping. var HAPTIC_PULSE_STRENGTH = 1.0; var HAPTIC_PULSE_DURATION = 13.0; @@ -322,7 +322,9 @@ EquipHotspotBuddy.prototype.update = function(deltaTime, timestamp, controllerDa } } else { var wearableProps = getWearableData(props); + var sensorToScaleFactor = MyAvatar.sensorToWorldScale; if (wearableProps && wearableProps.joints) { + result.push({ key: entityID.toString() + "0", entityID: entityID, @@ -332,7 +334,7 @@ EquipHotspotBuddy.prototype.update = function(deltaTime, timestamp, controllerDa z: 0 }, worldPosition: entityXform.pos, - radius: EQUIP_RADIUS, + radius: EQUIP_RADIUS * sensorToScaleFactor, joints: wearableProps.joints, modelURL: null, modelScale: null From e626ca3ccde903681977e6390f8f9c73ecbe11e6 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Sun, 3 Dec 2017 13:40:00 -0800 Subject: [PATCH 274/329] Working on scene threading optimizations --- libraries/render/src/render/Scene.cpp | 162 ++++++++++++++++++++------ libraries/render/src/render/Scene.h | 14 ++- 2 files changed, 137 insertions(+), 39 deletions(-) diff --git a/libraries/render/src/render/Scene.cpp b/libraries/render/src/render/Scene.cpp index 88e25b6d27..508cd6cefb 100644 --- a/libraries/render/src/render/Scene.cpp +++ b/libraries/render/src/render/Scene.cpp @@ -32,23 +32,23 @@ void Transaction::removeItem(ItemID id) { } void Transaction::addTransitionToItem(ItemID id, Transition::Type transition, ItemID boundId) { - _addedTransitions.emplace_back(TransitionAdd{ id, transition, boundId }); + _addedTransitions.emplace_back(id, transition, boundId); } void Transaction::removeTransitionFromItem(ItemID id) { - _addedTransitions.emplace_back(TransitionAdd{ id, Transition::NONE, render::Item::INVALID_ITEM_ID }); + _addedTransitions.emplace_back(id, Transition::NONE, render::Item::INVALID_ITEM_ID); } void Transaction::reApplyTransitionToItem(ItemID id) { - _reAppliedTransitions.emplace_back(TransitionReApply{ id }); + _reAppliedTransitions.emplace_back(id); } void Transaction::queryTransitionOnItem(ItemID id, TransitionQueryFunc func) { - _queriedTransitions.emplace_back(TransitionQuery{ id, func }); + _queriedTransitions.emplace_back(id, func); } void Transaction::updateItem(ItemID id, const UpdateFunctorPointer& functor) { - _updatedItems.emplace_back(Update{ id, functor }); + _updatedItems.emplace_back(id, functor); } void Transaction::resetSelection(const Selection& selection) { @@ -56,28 +56,122 @@ void Transaction::resetSelection(const Selection& selection) { } void Transaction::resetSelectionHighlight(const std::string& selectionName, const HighlightStyle& style) { - _highlightResets.emplace_back(HighlightReset{ selectionName, style }); + _highlightResets.emplace_back(selectionName, style ); } void Transaction::removeHighlightFromSelection(const std::string& selectionName) { _highlightRemoves.emplace_back(selectionName); } -void Transaction::querySelectionHighlight(const std::string& selectionName, SelectionHighlightQueryFunc func) { - _highlightQueries.emplace_back(HighlightQuery{ selectionName, func }); +void Transaction::querySelectionHighlight(const std::string& selectionName, const SelectionHighlightQueryFunc& func) { + _highlightQueries.emplace_back(selectionName, func); +} + +void Transaction::reserve(const std::vector& transactionContainer) { + size_t resetItemsCount = 0; + size_t removedItemsCount = 0; + size_t updatedItemsCount = 0; + size_t resetSelectionsCount = 0; + size_t addedTransitionsCount = 0; + size_t queriedTransitionsCount = 0; + size_t reAppliedTransitionsCount = 0; + size_t highlightResetsCount = 0; + size_t highlightRemovesCount = 0; + size_t highlightQueriesCount = 0; + + for (const auto& transaction : transactionContainer) { + resetItemsCount += transaction._resetItems.size(); + removedItemsCount += transaction._removedItems.size(); + updatedItemsCount += transaction._updatedItems.size(); + resetSelectionsCount += transaction._resetSelections.size(); + addedTransitionsCount += transaction._addedTransitions.size(); + queriedTransitionsCount += transaction._queriedTransitions.size(); + reAppliedTransitionsCount += transaction._reAppliedTransitions.size(); + highlightResetsCount += transaction._highlightResets.size(); + highlightRemovesCount += transaction._highlightRemoves.size(); + highlightQueriesCount += transaction._highlightQueries.size(); + } + + _resetItems.reserve(resetItemsCount); + _removedItems.reserve(removedItemsCount); + _updatedItems.reserve(updatedItemsCount); + _resetSelections.reserve(resetSelectionsCount); + _addedTransitions.reserve(addedTransitionsCount); + _queriedTransitions.reserve(queriedTransitionsCount); + _reAppliedTransitions.reserve(reAppliedTransitionsCount); + _highlightResets.reserve(highlightResetsCount); + _highlightRemoves.reserve(highlightRemovesCount); + _highlightQueries.reserve(highlightQueriesCount); +} + +void Transaction::merge(const std::vector& transactionContainer) { + reserve(transactionContainer); + for (const auto& transaction : transactionContainer) { + merge(transaction); + } +} + + +void Transaction::merge(std::vector&& transactionContainer) { + reserve(transactionContainer); + auto begin = std::make_move_iterator(transactionContainer.begin()); + auto end = std::make_move_iterator(transactionContainer.end()); + for (auto itr = begin; itr != end; ++itr) { + merge(*itr); + } + transactionContainer.clear(); +} + + +template +void moveElements(T& target, T& source) { + target.insert(target.end(), std::make_move_iterator(source.begin()), std::make_move_iterator(source.begin())); + source.clear(); +} + +template +void copyElements(T& target, const T& source) { + target.insert(target.end(), source.begin(), source.begin()); +} + + +void Transaction::merge(Transaction&& transaction) { + moveElements(_resetItems, transaction._resetItems); + moveElements(_removedItems, transaction._removedItems); + moveElements(_updatedItems, transaction._updatedItems); + moveElements(_resetSelections, transaction._resetSelections); + moveElements(_addedTransitions, transaction._addedTransitions); + moveElements(_queriedTransitions, transaction._queriedTransitions); + moveElements(_reAppliedTransitions, transaction._reAppliedTransitions); + moveElements(_highlightResets, transaction._highlightResets); + moveElements(_highlightRemoves, transaction._highlightRemoves); + moveElements(_highlightQueries, transaction._highlightQueries); } void Transaction::merge(const Transaction& transaction) { - _resetItems.insert(_resetItems.end(), transaction._resetItems.begin(), transaction._resetItems.end()); - _removedItems.insert(_removedItems.end(), transaction._removedItems.begin(), transaction._removedItems.end()); - _updatedItems.insert(_updatedItems.end(), transaction._updatedItems.begin(), transaction._updatedItems.end()); - _resetSelections.insert(_resetSelections.end(), transaction._resetSelections.begin(), transaction._resetSelections.end()); - _addedTransitions.insert(_addedTransitions.end(), transaction._addedTransitions.begin(), transaction._addedTransitions.end()); - _queriedTransitions.insert(_queriedTransitions.end(), transaction._queriedTransitions.begin(), transaction._queriedTransitions.end()); - _reAppliedTransitions.insert(_reAppliedTransitions.end(), transaction._reAppliedTransitions.begin(), transaction._reAppliedTransitions.end()); - _highlightResets.insert(_highlightResets.end(), transaction._highlightResets.begin(), transaction._highlightResets.end()); - _highlightRemoves.insert(_highlightRemoves.end(), transaction._highlightRemoves.begin(), transaction._highlightRemoves.end()); - _highlightQueries.insert(_highlightQueries.end(), transaction._highlightQueries.begin(), transaction._highlightQueries.end()); + copyElements(_resetItems, transaction._resetItems); + copyElements(_removedItems, transaction._removedItems); + copyElements(_updatedItems, transaction._updatedItems); + copyElements(_resetSelections, transaction._resetSelections); + copyElements(_addedTransitions, transaction._addedTransitions); + copyElements(_queriedTransitions, transaction._queriedTransitions); + copyElements(_reAppliedTransitions, transaction._reAppliedTransitions); + copyElements(_highlightResets, transaction._highlightResets); + copyElements(_highlightRemoves, transaction._highlightRemoves); + copyElements(_highlightQueries, transaction._highlightQueries); +} + +void Transaction::clear() { + _resetItems.clear(); + _removedItems.clear(); + _updatedItems.clear(); + _resetSelections.clear(); + _addedTransitions.clear(); + _queriedTransitions.clear(); + _reAppliedTransitions.clear(); + _highlightResets.clear(); + _highlightRemoves.clear(); + _highlightQueries.clear(); } @@ -102,54 +196,50 @@ bool Scene::isAllocatedID(const ItemID& id) const { /// Enqueue change batch to the scene void Scene::enqueueTransaction(const Transaction& transaction) { - _transactionQueueMutex.lock(); - _transactionQueue.push(transaction); - _transactionQueueMutex.unlock(); + std::unique_lock lock(_transactionQueueMutex); + _transactionQueue.emplace_back(transaction); } -void consolidateTransaction(TransactionQueue& queue, Transaction& singleBatch) { - while (!queue.empty()) { - const auto& transaction = queue.front(); - singleBatch.merge(transaction); - queue.pop(); - }; +void Scene::enqueueTransaction(Transaction&& transaction) { + std::unique_lock lock(_transactionQueueMutex); + _transactionQueue.emplace_back(std::move(transaction)); } uint32_t Scene::enqueueFrame() { PROFILE_RANGE(render, __FUNCTION__); - Transaction consolidatedTransaction; + TransactionQueue localTransactionQueue; { std::unique_lock lock(_transactionQueueMutex); - consolidateTransaction(_transactionQueue, consolidatedTransaction); + localTransactionQueue.swap(_transactionQueue); } - uint32_t frameNumber = 0; + Transaction consolidatedTransaction; + consolidatedTransaction.merge(std::move(localTransactionQueue)); { std::unique_lock lock(_transactionFramesMutex); _transactionFrames.push_back(consolidatedTransaction); - _transactionFrameNumber++; - frameNumber = _transactionFrameNumber; } - return frameNumber; + return ++_transactionFrameNumber; } void Scene::processTransactionQueue() { PROFILE_RANGE(render, __FUNCTION__); - TransactionFrames queuedFrames; + static TransactionFrames queuedFrames; { // capture the queued frames and clear the queue std::unique_lock lock(_transactionFramesMutex); - queuedFrames = _transactionFrames; - _transactionFrames.clear(); + queuedFrames.swap(_transactionFrames); } // go through the queue of frames and process them for (auto& frame : queuedFrames) { processTransactionFrame(frame); } + + queuedFrames.clear(); } void Scene::processTransactionFrame(const Transaction& transaction) { diff --git a/libraries/render/src/render/Scene.h b/libraries/render/src/render/Scene.h index af6204acb4..2d8bc7f4dd 100644 --- a/libraries/render/src/render/Scene.h +++ b/libraries/render/src/render/Scene.h @@ -65,9 +65,14 @@ public: void resetSelectionHighlight(const std::string& selectionName, const HighlightStyle& style = HighlightStyle()); void removeHighlightFromSelection(const std::string& selectionName); - void querySelectionHighlight(const std::string& selectionName, SelectionHighlightQueryFunc func); + void querySelectionHighlight(const std::string& selectionName, const SelectionHighlightQueryFunc& func); + void reserve(const std::vector& transactionContainer); + void merge(const std::vector& transactionContainer); + void merge(std::vector&& transactionContainer); void merge(const Transaction& transaction); + void merge(Transaction&& transaction); + void clear(); // Checkers if there is work to do when processing the transaction bool touchTransactions() const { return !_resetSelections.empty(); } @@ -107,7 +112,7 @@ protected: HighlightRemoves _highlightRemoves; HighlightQueries _highlightQueries; }; -typedef std::queue TransactionQueue; +typedef std::vector TransactionQueue; // Scene is a container for Items @@ -133,6 +138,9 @@ public: // Enqueue transaction to the scene void enqueueTransaction(const Transaction& transaction); + // Enqueue transaction to the scene + void enqueueTransaction(Transaction&& transaction); + // Enqueue end of frame transactions boundary uint32_t enqueueFrame(); @@ -187,7 +195,7 @@ protected: std::mutex _transactionFramesMutex; - using TransactionFrames = std::list; + using TransactionFrames = std::vector; TransactionFrames _transactionFrames; uint32_t _transactionFrameNumber{ 0 }; From 2a91e98813f7eb2dd0c4988fd499e7ea85c0e8f0 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Wed, 6 Dec 2017 14:25:03 -0800 Subject: [PATCH 275/329] Fix iterator names --- libraries/render/src/render/Scene.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/render/src/render/Scene.cpp b/libraries/render/src/render/Scene.cpp index 508cd6cefb..4b337a1046 100644 --- a/libraries/render/src/render/Scene.cpp +++ b/libraries/render/src/render/Scene.cpp @@ -125,13 +125,13 @@ void Transaction::merge(std::vector&& transactionContainer) { template void moveElements(T& target, T& source) { - target.insert(target.end(), std::make_move_iterator(source.begin()), std::make_move_iterator(source.begin())); + target.insert(target.end(), std::make_move_iterator(source.begin()), std::make_move_iterator(source.end())); source.clear(); } template void copyElements(T& target, const T& source) { - target.insert(target.end(), source.begin(), source.begin()); + target.insert(target.end(), source.begin(), source.end()); } From efd72be96fd73068820973a88fd0d78a30b5078b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 7 Dec 2017 12:05:46 +1300 Subject: [PATCH 276/329] Fix image overlay's subImage property's width and height support --- .../qml/hifi/overlays/ImageOverlay.qml | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/interface/resources/qml/hifi/overlays/ImageOverlay.qml b/interface/resources/qml/hifi/overlays/ImageOverlay.qml index 8c638679f9..6899c38e67 100644 --- a/interface/resources/qml/hifi/overlays/ImageOverlay.qml +++ b/interface/resources/qml/hifi/overlays/ImageOverlay.qml @@ -9,33 +9,30 @@ Overlay { Image { id: image - property bool scaleFix: true; - property real xOffset: 0 - property real yOffset: 0 + property bool scaleFix: true + property real xStart: 0 + property real yStart: 0 + property real xSize: 0 + property real ySize: 0 property real imageScale: 1.0 property var resizer: Timer { interval: 50 repeat: false running: false onTriggered: { - var targetAspect = root.width / root.height; - var sourceAspect = image.sourceSize.width / image.sourceSize.height; - if (sourceAspect <= targetAspect) { - if (root.width === image.sourceSize.width) { - return; - } - image.imageScale = root.width / image.sourceSize.width; - } else if (sourceAspect > targetAspect){ - if (root.height === image.sourceSize.height) { - return; - } - image.imageScale = root.height / image.sourceSize.height; + if (image.xSize === 0) { + image.xSize = image.sourceSize.width - image.xStart; } - image.sourceSize = Qt.size(image.sourceSize.width * image.imageScale, image.sourceSize.height * image.imageScale); + if (image.ySize === 0) { + image.ySize = image.sourceSize.height - image.yStart; + } + + image.anchors.leftMargin = -image.xStart * root.width / image.xSize; + image.anchors.topMargin = -image.yStart * root.height / image.ySize; + image.anchors.rightMargin = (image.xStart + image.xSize - image.sourceSize.width) * root.width / image.xSize; + image.anchors.bottomMargin = (image.yStart + image.ySize - image.sourceSize.height) * root.height / image.ySize; } } - x: -1 * xOffset * imageScale - y: -1 * yOffset * imageScale onSourceSizeChanged: { if (sourceSize.width !== 0 && sourceSize.height !== 0 && progress === 1.0 && scaleFix) { @@ -43,6 +40,8 @@ Overlay { resizer.start(); } } + + anchors.fill: parent } ColorOverlay { @@ -57,8 +56,10 @@ Overlay { var key = keys[i]; var value = subImage[key]; switch (key) { - case "x": image.xOffset = value; break; - case "y": image.yOffset = value; break; + case "x": image.xStart = value; break; + case "y": image.yStart = value; break; + case "width": image.xSize = value; break; + case "height": image.ySize = value; break; } } } From d61f0584c3f5f5ec42b5a4684a87718f17b5a0e9 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 7 Dec 2017 12:26:29 +1300 Subject: [PATCH 277/329] Fix diectory.js script's icon URL --- scripts/system/directory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/directory.js b/scripts/system/directory.js index 8b9ec17f05..f84429ab95 100644 --- a/scripts/system/directory.js +++ b/scripts/system/directory.js @@ -63,7 +63,7 @@ var toolBar = (function() { y: -TOOLBAR_MARGIN_Y - toolHeight }); browseDirectoryButton = toolBar.addTool({ - imageURL: toolIconUrl + "directory-01.svg", + imageURL: toolIconUrl + "directory.svg", subImage: { x: 0, y: Tool.IMAGE_WIDTH, From ed76ca8018df6eeee3e96482f594cdda3e357cdb Mon Sep 17 00:00:00 2001 From: H Q Date: Wed, 6 Dec 2017 15:37:19 -0800 Subject: [PATCH 278/329] return to main mktplace page from rez page --- scripts/system/marketplaces/marketplaces.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js index 646e5452df..16787e1bfc 100644 --- a/scripts/system/marketplaces/marketplaces.js +++ b/scripts/system/marketplaces/marketplaces.js @@ -421,7 +421,8 @@ break; case 'checkout_itemLinkClicked': case 'checkout_continueShopping': - tablet.gotoWebScreen(MARKETPLACE_URL + '/items/' + message.itemId, MARKETPLACES_INJECT_SCRIPT_URL); + //tablet.gotoWebScreen(MARKETPLACE_URL + '/items/' + message.itemId, MARKETPLACES_INJECT_SCRIPT_URL); + tablet.gotoWebScreen(MARKETPLACE_URL_INITIAL, MARKETPLACES_INJECT_SCRIPT_URL); //tablet.popFromStack(); break; case 'purchases_itemInfoClicked': From ebad5cf503652ee2d53f9e8e3f88a923f52eddd8 Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Wed, 6 Dec 2017 16:55:32 -0800 Subject: [PATCH 279/329] Reduced threshold from 0.9995 to 0.995 --- tools/auto-tester/src/Test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 835655eef1..f314e25df3 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -24,7 +24,7 @@ Test::Test() { bool Test::compareImageLists(QStringList expectedImages, QStringList resultImages) { // Loop over both lists and compare each pair of images // Quit loop if user has aborted due to a failed test. - const double THRESHOLD{ 0.9995 }; + const double THRESHOLD{ 0.995 }; bool success{ true }; bool keepOn{ true }; for (int i = 0; keepOn && i < expectedImages.length(); ++i) { From 5500a6d11cd9b8370e846968c823121f16d89f19 Mon Sep 17 00:00:00 2001 From: samcake Date: Wed, 6 Dec 2017 18:02:30 -0800 Subject: [PATCH 280/329] More to come --- .../scripting/SelectionScriptingInterface.cpp | 59 ++++++++++++++++--- .../scripting/SelectionScriptingInterface.h | 39 ++++++++---- .../developer/utilities/render/highlight2.qml | 6 +- 3 files changed, 80 insertions(+), 24 deletions(-) diff --git a/interface/src/scripting/SelectionScriptingInterface.cpp b/interface/src/scripting/SelectionScriptingInterface.cpp index 841e1738e3..195f1657e8 100644 --- a/interface/src/scripting/SelectionScriptingInterface.cpp +++ b/interface/src/scripting/SelectionScriptingInterface.cpp @@ -80,6 +80,20 @@ bool SelectionScriptingInterface::clearSelectedItemsList(const QString& listName return true; } +QStringList SelectionScriptingInterface::getListNames() const { + QStringList list; + QReadLocker lock(&_selectionListsLock); + list = _selectedItemsListMap.keys(); + return list; +} + +QStringList SelectionScriptingInterface::getHighlightedListNames() const { + QStringList list; + QReadLocker lock(&_highlightStylesLock); + list = _highlightStyleMap.keys(); + return list; +} + bool SelectionScriptingInterface::enableListHighlight(const QString& listName, const QVariantMap& highlightStyleValues) { QWriteLocker lock(&_highlightStylesLock); @@ -146,14 +160,6 @@ QVariantMap SelectionScriptingInterface::getListHighlightStyle(const QString& li } } - -QStringList SelectionScriptingInterface::getHighlightStyles() const { - QStringList list; - QReadLocker lock(&_highlightStylesLock); - list = _highlightStyleMap.keys(); - return list; -} - render::HighlightStyle SelectionScriptingInterface::getHighlightStyle(const QString& listName) const { QReadLocker lock(&_highlightStylesLock); auto highlightStyle = _highlightStyleMap.find(listName); @@ -234,6 +240,43 @@ void SelectionScriptingInterface::printList(const QString& listName) { } } +QVariantMap SelectionScriptingInterface::getSelectedItemsList(const QString& listName) const { + QReadLocker lock(&_selectionListsLock); + QVariantMap list; + auto currentList = _selectedItemsListMap.find(listName); + if (currentList != _selectedItemsListMap.end()) { + if ((*currentList).getContainsData()) { + + if (!(*currentList).getAvatarIDs().empty()) { + QList avatarIDs = QList::fromVector(QVector::fromStdVector((*currentList).getAvatarIDs())); + list["avatars"].fromValue( avatarIDs); + } + if (!(*currentList).getEntityIDs().empty()) { + // QList entityIDs = QList::fromVector(QVector::fromStdVector((*currentList).getEntityIDs())); + QList entityIDs; + for (auto j : (*currentList).getEntityIDs()) { + entityIDs.push_back( j ); + } + list["entities"] = (entityIDs); + } + if (!(*currentList).getOverlayIDs().empty()) { + QList overlayIDs = QList::fromVector(QVector::fromStdVector((*currentList).getOverlayIDs())); + list["overlays"].fromValue(overlayIDs); + } + + return list; + } + else { + //qDebug() << "List named " << listName << " empty"; + return list; + } + } + else { + // qDebug() << "List named " << listName << " doesn't exist."; + return list; + } +} + bool SelectionScriptingInterface::removeListFromMap(const QString& listName) { bool removed = false; { diff --git a/interface/src/scripting/SelectionScriptingInterface.h b/interface/src/scripting/SelectionScriptingInterface.h index d0dcf8caec..a05ddaa62c 100644 --- a/interface/src/scripting/SelectionScriptingInterface.h +++ b/interface/src/scripting/SelectionScriptingInterface.h @@ -27,17 +27,17 @@ class GameplayObjects { public: GameplayObjects(); - bool getContainsData() { return containsData; } + bool getContainsData() const { return containsData; } - std::vector getAvatarIDs() { return _avatarIDs; } + std::vector getAvatarIDs() const { return _avatarIDs; } bool addToGameplayObjects(const QUuid& avatarID); bool removeFromGameplayObjects(const QUuid& avatarID); - std::vector getEntityIDs() { return _entityIDs; } + std::vector getEntityIDs() const { return _entityIDs; } bool addToGameplayObjects(const EntityItemID& entityID); bool removeFromGameplayObjects(const EntityItemID& entityID); - std::vector getOverlayIDs() { return _overlayIDs; } + std::vector getOverlayIDs() const { return _overlayIDs; } bool addToGameplayObjects(const OverlayID& overlayID); bool removeFromGameplayObjects(const OverlayID& overlayID); @@ -90,14 +90,8 @@ class SelectionScriptingInterface : public QObject, public Dependency { public: SelectionScriptingInterface(); - GameplayObjects getList(const QString& listName); + Q_INVOKABLE QStringList getListNames() const; - /**jsdoc - * Prints out the list of avatars, entities and overlays stored in a particular selection. - * @function Selection.printList - * @param listName {string} name of the selection - */ - Q_INVOKABLE void printList(const QString& listName); /**jsdoc * Removes a named selection from the list of selections. * @function Selection.removeListFromMap @@ -132,6 +126,26 @@ public: */ Q_INVOKABLE bool clearSelectedItemsList(const QString& listName); + + + /**jsdoc + * Prints out the list of avatars, entities and overlays stored in a particular selection. + * @function Selection.printList + * @param listName {string} name of the selection + */ + Q_INVOKABLE void printList(const QString& listName); + + /**jsdoc + * Query the list of avatars, entities and overlays stored in a particular selection. + * @function Selection.getList + * @param listName {string} name of the selection + * @return + */ + Q_INVOKABLE QVariantMap getSelectedItemsList(const QString& listName) const; + + // + Q_INVOKABLE QStringList getHighlightedListNames() const; + /**jsdoc * Enable highlighting for the named selection. * If the Selection doesn't exist, it will be created. @@ -176,7 +190,8 @@ public: */ Q_INVOKABLE QVariantMap getListHighlightStyle(const QString& listName) const; - Q_INVOKABLE QStringList getHighlightStyles() const; + + GameplayObjects getList(const QString& listName); render::HighlightStyle getHighlightStyle(const QString& listName) const; diff --git a/scripts/developer/utilities/render/highlight2.qml b/scripts/developer/utilities/render/highlight2.qml index 583488c37d..b22cfd4033 100644 --- a/scripts/developer/utilities/render/highlight2.qml +++ b/scripts/developer/utilities/render/highlight2.qml @@ -24,7 +24,7 @@ Item { anchors.margins: 0 property var listName: "contextOverlayHighlightList" - property var styleList: Selection.getHighlightStyles() + property var styleList: Selection.getHighlightedListNames() signal sendToScript(var message); @@ -50,10 +50,9 @@ Item { id: debug text: "Refresh" height: 24 - width: 128 onClicked: { print("list of highlight styles") - root.styleList = Selection.getHighlightStyles() + root.styleList = Selection.getHighlightedListNames() print(root.styleList) styleSelectorLoader.sourceComponent = undefined; @@ -71,7 +70,6 @@ Item { id: selectorWidget HifiControls.ComboBox { id: box - width: 350 z: 999 editable: true colorScheme: hifi.colorSchemes.dark From 0245a7005daa126c9569c3fc78b4ad361fc12aea Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 6 Dec 2017 22:44:58 -0800 Subject: [PATCH 281/329] Adding the query of a particular selection content --- .../scripting/SelectionScriptingInterface.cpp | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/interface/src/scripting/SelectionScriptingInterface.cpp b/interface/src/scripting/SelectionScriptingInterface.cpp index 195f1657e8..4e28fb4702 100644 --- a/interface/src/scripting/SelectionScriptingInterface.cpp +++ b/interface/src/scripting/SelectionScriptingInterface.cpp @@ -104,10 +104,6 @@ bool SelectionScriptingInterface::enableListHighlight(const QString& listName, c } if (!(*highlightStyle).isBoundToList()) { - /* auto currentList = _selectedItemsListMap.find(listName); - if (currentList == _selectedItemsListMap.end()) { - _selectedItemsListMap.insert(listName, GameplayObjects()); - }*/ setupHandler(listName); (*highlightStyle).setBoundToList(true); } @@ -248,31 +244,34 @@ QVariantMap SelectionScriptingInterface::getSelectedItemsList(const QString& lis if ((*currentList).getContainsData()) { if (!(*currentList).getAvatarIDs().empty()) { - QList avatarIDs = QList::fromVector(QVector::fromStdVector((*currentList).getAvatarIDs())); - list["avatars"].fromValue( avatarIDs); + QList avatarIDs; + for (auto j : (*currentList).getAvatarIDs()) { + avatarIDs.push_back((QUuid)j); + } + list["avatars"] = (avatarIDs); } if (!(*currentList).getEntityIDs().empty()) { - // QList entityIDs = QList::fromVector(QVector::fromStdVector((*currentList).getEntityIDs())); QList entityIDs; for (auto j : (*currentList).getEntityIDs()) { - entityIDs.push_back( j ); + entityIDs.push_back((QUuid)j ); } list["entities"] = (entityIDs); } if (!(*currentList).getOverlayIDs().empty()) { - QList overlayIDs = QList::fromVector(QVector::fromStdVector((*currentList).getOverlayIDs())); - list["overlays"].fromValue(overlayIDs); + QList overlayIDs; + for (auto j : (*currentList).getOverlayIDs()) { + overlayIDs.push_back((QUuid)j); + } + list["overlays"] = (overlayIDs); } return list; } else { - //qDebug() << "List named " << listName << " empty"; return list; } } else { - // qDebug() << "List named " << listName << " doesn't exist."; return list; } } From 99c52f86021fc1f6a919d8aea6de53d8633f56a8 Mon Sep 17 00:00:00 2001 From: Sam Gondelman Date: Thu, 7 Dec 2017 09:38:14 -0800 Subject: [PATCH 282/329] coding standards --- interface/src/ui/overlays/Web3DOverlay.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/ui/overlays/Web3DOverlay.h b/interface/src/ui/overlays/Web3DOverlay.h index 33ab849e25..4098e98488 100644 --- a/interface/src/ui/overlays/Web3DOverlay.h +++ b/interface/src/ui/overlays/Web3DOverlay.h @@ -91,9 +91,9 @@ private: gpu::TexturePointer _texture; QString _url; QString _scriptURL; - float _dpi { 30 }; + float _dpi { 30.0f }; int _geometryId { 0 }; - bool _showKeyboardFocusHighlight{ true }; + bool _showKeyboardFocusHighlight { true }; QTouchDevice _touchDevice; From 21077da41ad47664c353cf0866246fd142b69384 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 7 Dec 2017 09:48:06 -0800 Subject: [PATCH 283/329] Don't send requests to backend if cached public keys is empty --- interface/src/commerce/QmlCommerce.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/interface/src/commerce/QmlCommerce.cpp b/interface/src/commerce/QmlCommerce.cpp index 435d15d161..69089df9c2 100644 --- a/interface/src/commerce/QmlCommerce.cpp +++ b/interface/src/commerce/QmlCommerce.cpp @@ -83,19 +83,28 @@ void QmlCommerce::buy(const QString& assetId, int cost, const bool controlledFai void QmlCommerce::balance() { auto ledger = DependencyManager::get(); auto wallet = DependencyManager::get(); - ledger->balance(wallet->listPublicKeys()); + QStringList cachedPublicKeys = wallet->listPublicKeys(); + if (!cachedPublicKeys.isEmpty()) { + ledger->balance(cachedPublicKeys); + } } void QmlCommerce::inventory() { auto ledger = DependencyManager::get(); auto wallet = DependencyManager::get(); - ledger->inventory(wallet->listPublicKeys()); + QStringList cachedPublicKeys = wallet->listPublicKeys(); + if (!cachedPublicKeys.isEmpty()) { + ledger->inventory(cachedPublicKeys); + } } void QmlCommerce::history() { auto ledger = DependencyManager::get(); auto wallet = DependencyManager::get(); - ledger->history(wallet->listPublicKeys()); + QStringList cachedPublicKeys = wallet->listPublicKeys(); + if (!cachedPublicKeys.isEmpty()) { + ledger->history(cachedPublicKeys); + } } void QmlCommerce::changePassphrase(const QString& oldPassphrase, const QString& newPassphrase) { From 095bedcd3fb062e3182e9a2d0c4171fef34fd833 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 7 Dec 2017 10:08:18 -0800 Subject: [PATCH 284/329] code review feedback --- .../avatars-renderer/src/avatars-renderer/Avatar.cpp | 2 +- libraries/avatars/src/AvatarData.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 44e75e5919..437ac623e3 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -1604,7 +1604,7 @@ float Avatar::getUnscaledEyeHeight() const { // if we determine the mesh is much larger then the skeleton, then we use the mesh height instead. // This helps prevent absurdly large avatars from exceeding the domain height limit. - const float MESH_SLOP_RATIO = 1.5; + const float MESH_SLOP_RATIO = 1.5f; if (meshHeight > skeletonHeight * MESH_SLOP_RATIO) { return meshHeight; } else { diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 06fe8b597b..410c57c343 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -138,11 +138,19 @@ void AvatarData::setDomainMaximumHeight(float domainMaximumHeight) { float AvatarData::getDomainMinScale() const { const float unscaledHeight = getUnscaledHeight(); + const float EPSILON = 1.0e-4f; + if (unscaledHeight <= EPSILON) { + unscaledHeight = DEFAULT_AVATAR_HEIGHT; + } return _domainMinimumHeight / unscaledHeight; } float AvatarData::getDomainMaxScale() const { const float unscaledHeight = getUnscaledHeight(); + const float EPSILON = 1.0e-4f; + if (unscaledHeight <= EPSILON) { + unscaledHeight = DEFAULT_AVATAR_HEIGHT; + } return _domainMaximumHeight / unscaledHeight; } From b5ffda69116e7b53de6117a74439759810b4455b Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 7 Dec 2017 10:09:09 -0800 Subject: [PATCH 285/329] const fix --- libraries/avatars/src/AvatarData.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 410c57c343..f2053e29d7 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -137,7 +137,7 @@ void AvatarData::setDomainMaximumHeight(float domainMaximumHeight) { } float AvatarData::getDomainMinScale() const { - const float unscaledHeight = getUnscaledHeight(); + float unscaledHeight = getUnscaledHeight(); const float EPSILON = 1.0e-4f; if (unscaledHeight <= EPSILON) { unscaledHeight = DEFAULT_AVATAR_HEIGHT; @@ -146,7 +146,7 @@ float AvatarData::getDomainMinScale() const { } float AvatarData::getDomainMaxScale() const { - const float unscaledHeight = getUnscaledHeight(); + float unscaledHeight = getUnscaledHeight(); const float EPSILON = 1.0e-4f; if (unscaledHeight <= EPSILON) { unscaledHeight = DEFAULT_AVATAR_HEIGHT; From 47b52238d91bab462be296e85971bd0bb0229fea Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 7 Dec 2017 10:49:23 -0800 Subject: [PATCH 286/329] code review feedback --- interface/src/avatar/MyAvatar.cpp | 8 ++++---- interface/src/avatar/MyAvatar.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 2f608aca15..6d5a202128 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1969,7 +1969,7 @@ void MyAvatar::updateOrientation(float deltaTime) { if (qApp->isHMDMode() && getCharacterController()->getState() == CharacterController::State::Hover && _hmdRollControlEnabled && hasDriveInput()) { // Turn with head roll. - const float MIN_CONTROL_SPEED = 2.0f; // meters / sec + const float MIN_CONTROL_SPEED = 2.0f * getSensorToWorldScale(); // meters / sec const glm::vec3 characterForward = getWorldOrientation() * Vectors::UNIT_NEG_Z; float forwardSpeed = glm::dot(characterForward, getWorldVelocity()); @@ -1985,13 +1985,13 @@ void MyAvatar::updateOrientation(float deltaTime) { const float MAX_ROLL_ANGLE = 90.0f; // degrees if (rollAngle > MIN_ROLL_ANGLE) { - // rate of turning is linearly proportional to rolAngle + // rate of turning is linearly proportional to rollAngle rollAngle = glm::clamp(rollAngle, MIN_ROLL_ANGLE, MAX_ROLL_ANGLE); // scale rollAngle into a value from zero to one. - float t = (rollAngle - MIN_ROLL_ANGLE) / (MAX_ROLL_ANGLE - MIN_ROLL_ANGLE); + float rollFactor = (rollAngle - MIN_ROLL_ANGLE) / (MAX_ROLL_ANGLE - MIN_ROLL_ANGLE); - float angularSpeed = rollSign * t * _hmdRollControlRate; + float angularSpeed = rollSign * rollFactor * _hmdRollControlRate; totalBodyYaw += direction * angularSpeed * deltaTime; } } diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 16cb0edfad..0902865f9e 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -741,7 +741,7 @@ private: bool _clearOverlayWhenMoving { true }; QString _dominantHand { DOMINANT_RIGHT_HAND }; - const float ROLL_CONTROL_DEAD_ZONE_DEFAULT = 8.0; // degrees + const float ROLL_CONTROL_DEAD_ZONE_DEFAULT = 8.0f; // degrees const float ROLL_CONTROL_RATE_DEFAULT = 114.0f; // degrees / sec bool _hmdRollControlEnabled { true }; From 94a58a2471a34814f36819ff81723c254729fdfd Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 7 Dec 2017 10:53:23 -0800 Subject: [PATCH 287/329] Remove baking dependency from assignment-client --- assignment-client/CMakeLists.txt | 2 +- assignment-client/src/assets/AssetServer.cpp | 3 +-- libraries/baking/src/FBXBaker.cpp | 2 +- libraries/baking/src/TextureBaker.cpp | 8 -------- libraries/baking/src/TextureBaker.h | 2 -- libraries/image/src/image/Image.cpp | 8 ++++++++ libraries/image/src/image/Image.h | 2 ++ tools/oven/CMakeLists.txt | 2 -- 8 files changed, 13 insertions(+), 16 deletions(-) diff --git a/assignment-client/CMakeLists.txt b/assignment-client/CMakeLists.txt index 8e35186bd0..e657587a7a 100644 --- a/assignment-client/CMakeLists.txt +++ b/assignment-client/CMakeLists.txt @@ -13,7 +13,7 @@ setup_memory_debugger() link_hifi_libraries( audio avatars octree gpu model fbx entities networking animation recording shared script-engine embedded-webserver - controllers physics plugins midi image baking + controllers physics plugins midi image ) add_dependencies(${TARGET_NAME} oven) diff --git a/assignment-client/src/assets/AssetServer.cpp b/assignment-client/src/assets/AssetServer.cpp index 98c29b02bb..1b533f10f3 100644 --- a/assignment-client/src/assets/AssetServer.cpp +++ b/assignment-client/src/assets/AssetServer.cpp @@ -33,7 +33,6 @@ #include #include #include -#include #include "AssetServerLogging.h" #include "BakeAssetTask.h" @@ -250,7 +249,7 @@ AssetServer::AssetServer(ReceivedMessage& message) : image::setNormalTexturesCompressionEnabled(true); image::setCubeTexturesCompressionEnabled(true); - BAKEABLE_TEXTURE_EXTENSIONS = TextureBaker::getSupportedFormats(); + BAKEABLE_TEXTURE_EXTENSIONS = image::getSupportedFormats(); qDebug() << "Supported baking texture formats:" << BAKEABLE_MODEL_EXTENSIONS; // Most of the work will be I/O bound, reading from disk and constructing packet objects, diff --git a/libraries/baking/src/FBXBaker.cpp b/libraries/baking/src/FBXBaker.cpp index ee24d6a4c2..a765e66bbc 100644 --- a/libraries/baking/src/FBXBaker.cpp +++ b/libraries/baking/src/FBXBaker.cpp @@ -607,7 +607,7 @@ void FBXBaker::rewriteAndBakeSceneTextures() { return; } - if (!TextureBaker::getSupportedFormats().contains(textureFileInfo.suffix())) { + if (!image::getSupportedFormats().contains(textureFileInfo.suffix())) { // this is a texture format we don't bake, skip it handleWarning(fbxTextureFileName + " is not a bakeable texture format"); continue; diff --git a/libraries/baking/src/TextureBaker.cpp b/libraries/baking/src/TextureBaker.cpp index 1a320efabc..ff006e7185 100644 --- a/libraries/baking/src/TextureBaker.cpp +++ b/libraries/baking/src/TextureBaker.cpp @@ -61,14 +61,6 @@ void TextureBaker::abort() { _abortProcessing.store(true); } -const QStringList TextureBaker::getSupportedFormats() { - auto formats = QImageReader::supportedImageFormats(); - QStringList stringFormats; - std::transform(formats.begin(), formats.end(), std::back_inserter(stringFormats), - [](QByteArray& format) -> QString { return format; }); - return stringFormats; -} - void TextureBaker::loadTexture() { // check if the texture is local or first needs to be downloaded if (_textureURL.isLocalFile()) { diff --git a/libraries/baking/src/TextureBaker.h b/libraries/baking/src/TextureBaker.h index b2e86b2b5b..90ecfe52f7 100644 --- a/libraries/baking/src/TextureBaker.h +++ b/libraries/baking/src/TextureBaker.h @@ -31,8 +31,6 @@ public: const QDir& outputDirectory, const QString& bakedFilename = QString(), const QByteArray& textureContent = QByteArray()); - static const QStringList getSupportedFormats(); - const QByteArray& getOriginalTexture() const { return _originalTexture; } QUrl getTextureURL() const { return _textureURL; } diff --git a/libraries/image/src/image/Image.cpp b/libraries/image/src/image/Image.cpp index 9f584c844f..de91901739 100644 --- a/libraries/image/src/image/Image.cpp +++ b/libraries/image/src/image/Image.cpp @@ -75,6 +75,14 @@ glm::uvec2 rectifyToSparseSize(const glm::uvec2& size) { namespace image { +const QStringList getSupportedFormats() { + auto formats = QImageReader::supportedImageFormats(); + QStringList stringFormats; + std::transform(formats.begin(), formats.end(), std::back_inserter(stringFormats), + [](QByteArray& format) -> QString { return format; }); + return stringFormats; +} + QImage::Format QIMAGE_HDR_FORMAT = QImage::Format_RGB30; TextureUsage::TextureLoader TextureUsage::getTextureLoaderForType(Type type, const QVariantMap& options) { diff --git a/libraries/image/src/image/Image.h b/libraries/image/src/image/Image.h index 856dc009cf..ef175935d0 100644 --- a/libraries/image/src/image/Image.h +++ b/libraries/image/src/image/Image.h @@ -80,6 +80,8 @@ gpu::TexturePointer processCubeTextureColorFromImage(const QImage& srcImage, con } // namespace TextureUsage +const QStringList getSupportedFormats(); + bool isColorTexturesCompressionEnabled(); bool isNormalTexturesCompressionEnabled(); bool isGrayscaleTexturesCompressionEnabled(); diff --git a/tools/oven/CMakeLists.txt b/tools/oven/CMakeLists.txt index 5f8f2c9542..321f81ba8f 100644 --- a/tools/oven/CMakeLists.txt +++ b/tools/oven/CMakeLists.txt @@ -17,6 +17,4 @@ if (UNIX) endif() endif () -set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL FALSE EXCLUDE_FROM_DEFAULT_BUILD FALSE) - install_beside_console() From 4dd08d93f4a2a013f30f8d85937a401647421854 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 7 Dec 2017 10:54:39 -0800 Subject: [PATCH 288/329] Cleanup dead code and unused var in BakerCLI --- tools/oven/src/BakerCLI.cpp | 4 ++-- tools/oven/src/ui/BakeWidget.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/oven/src/BakerCLI.cpp b/tools/oven/src/BakerCLI.cpp index eee92d7295..5af65c4dc0 100644 --- a/tools/oven/src/BakerCLI.cpp +++ b/tools/oven/src/BakerCLI.cpp @@ -42,7 +42,7 @@ void BakerCLI::bakeFile(QUrl inputUrl, const QString& outputPath, const QString& } // check what kind of baker we should be creating - bool isFBX = extension == MODEL_EXTENSION;//inputUrl.toDisplayString().endsWith(MODEL_EXTENSION, Qt::CaseInsensitive); + bool isFBX = extension == MODEL_EXTENSION; bool isSupportedImage = QImageReader::supportedImageFormats().contains(extension.toLatin1()); @@ -75,7 +75,7 @@ void BakerCLI::handleFinishedBaker() { exitCode = OVEN_STATUS_CODE_ABORT; } else if (_baker->hasErrors()) { exitCode = OVEN_STATUS_CODE_FAIL; - QFile errorFile { _outputPath.absoluteFilePath("errors.txt") }; + QFile errorFile { _outputPath.absoluteFilePath(OVEN_ERROR_FILENAME) }; if (errorFile.open(QFile::WriteOnly)) { errorFile.write(_baker->getErrors().join('\n').toUtf8()); errorFile.close(); diff --git a/tools/oven/src/ui/BakeWidget.h b/tools/oven/src/ui/BakeWidget.h index d71bd71252..34cced537a 100644 --- a/tools/oven/src/ui/BakeWidget.h +++ b/tools/oven/src/ui/BakeWidget.h @@ -13,6 +13,7 @@ #define hifi_BakeWidget_h #include + #include #include From 8c1a4e058ec941b416322216476bc2d0231eefa4 Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Thu, 7 Dec 2017 10:58:28 -0800 Subject: [PATCH 289/329] Changed format (to 5 digits). Changed threshold. --- tools/auto-tester/src/Test.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index f314e25df3..89c9d276d5 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -24,7 +24,7 @@ Test::Test() { bool Test::compareImageLists(QStringList expectedImages, QStringList resultImages) { // Loop over both lists and compare each pair of images // Quit loop if user has aborted due to a failed test. - const double THRESHOLD{ 0.995 }; + const double THRESHOLD{ 0.9995 }; bool success{ true }; bool keepOn{ true }; for (int i = 0; keepOn && i < expectedImages.length(); ++i) { @@ -337,7 +337,12 @@ void Test::createTest() { exit(-1); } } else if (isInSnapshotFilenameFormat(currentFilename)) { - QString newFilename = "ExpectedImage_" + QString::number(i) + ".jpg"; + const int MAX_IMAGES = 100000; + if (i >= MAX_IMAGES) { + messageBox.critical(0, "Error", "More than 100,000 images not supported"); + exit(-1); + } + QString newFilename = "ExpectedImage_" + QString::number(i-1).rightJustified(5, '0') + ".jpg"; QString fullNewFileName = pathToImageDirectory + "/" + newFilename; imageDirectory.rename(fullCurrentFilename, newFilename); From 72ed3b077df4328d4b28fbbe7c3956787acb8c57 Mon Sep 17 00:00:00 2001 From: H Q Date: Thu, 7 Dec 2017 11:28:40 -0800 Subject: [PATCH 290/329] Addressed PR change requests --- scripts/system/marketplaces/marketplaces.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js index 16787e1bfc..7a85462395 100644 --- a/scripts/system/marketplaces/marketplaces.js +++ b/scripts/system/marketplaces/marketplaces.js @@ -420,8 +420,9 @@ tablet.pushOntoStack(MARKETPLACE_PURCHASES_QML_PATH); break; case 'checkout_itemLinkClicked': + tablet.gotoWebScreen(MARKETPLACE_URL + '/items/' + message.itemId, MARKETPLACES_INJECT_SCRIPT_URL); + break; case 'checkout_continueShopping': - //tablet.gotoWebScreen(MARKETPLACE_URL + '/items/' + message.itemId, MARKETPLACES_INJECT_SCRIPT_URL); tablet.gotoWebScreen(MARKETPLACE_URL_INITIAL, MARKETPLACES_INJECT_SCRIPT_URL); //tablet.popFromStack(); break; From 580660543917ddab78a35f5ea9e8d2e5011e54d9 Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Thu, 7 Dec 2017 11:34:56 -0800 Subject: [PATCH 291/329] Reformatting per coding standard. --- tools/auto-tester/src/Test.cpp | 26 ++++++++++----------- tools/auto-tester/src/common.h | 12 +++++----- tools/auto-tester/src/main.cpp | 3 +-- tools/auto-tester/src/ui/AutoTester.cpp | 19 +++++---------- tools/auto-tester/src/ui/AutoTester.h | 3 +-- tools/auto-tester/src/ui/MismatchWindow.cpp | 13 ++++------- 6 files changed, 31 insertions(+), 45 deletions(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 89c9d276d5..41c17f570f 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -39,8 +39,7 @@ bool Test::compareImageLists(QStringList expectedImages, QStringList resultImage double similarityIndex; // in [-1.0 .. 1.0], where 1.0 means images are identical try { similarityIndex = imageComparer.compareImages(resultImage, expectedImage); - } - catch (...) { + } catch (...) { messageBox.critical(0, "Internal error", "Image not in expected format"); exit(-1); } @@ -56,17 +55,18 @@ bool Test::compareImageLists(QStringList expectedImages, QStringList resultImage mismatchWindow.exec(); switch (mismatchWindow.getUserResponse()) { - case USER_RESPONSE_PASS: - break; - case USE_RESPONSE_FAIL: - success = false; - break; - case USER_RESPONSE_ABORT: - keepOn = false; - success = false; - break; - default: - assert(false); + case USER_RESPONSE_PASS: + break; + case USE_RESPONSE_FAIL: + success = false; + break; + case USER_RESPONSE_ABORT: + keepOn = false; + success = false; + break; + default: + assert(false); + break; } } } diff --git a/tools/auto-tester/src/common.h b/tools/auto-tester/src/common.h index 113bda9a1b..126177358f 100644 --- a/tools/auto-tester/src/common.h +++ b/tools/auto-tester/src/common.h @@ -14,12 +14,12 @@ class TestFailure { public: - TestFailure(float error, QString pathname, QString expectedImageFilename, QString actualImageFilename) { - _error = error; - _pathname = pathname; - _expectedImageFilename = expectedImageFilename; - _actualImageFilename = actualImageFilename; - } + TestFailure(float error, QString pathname, QString expectedImageFilename, QString actualImageFilename) : + _error(error), + _pathname(pathname), + _expectedImageFilename(expectedImageFilename), + _actualImageFilename(actualImageFilename) + {} double _error; QString _pathname; diff --git a/tools/auto-tester/src/main.cpp b/tools/auto-tester/src/main.cpp index 2550e62190..6e5e06b732 100644 --- a/tools/auto-tester/src/main.cpp +++ b/tools/auto-tester/src/main.cpp @@ -10,8 +10,7 @@ #include #include "ui/AutoTester.h" -int main(int argc, char *argv[]) -{ +int main(int argc, char *argv[]) { QApplication application(argc, argv); AutoTester autoTester; diff --git a/tools/auto-tester/src/ui/AutoTester.cpp b/tools/auto-tester/src/ui/AutoTester.cpp index 46f50f40f7..105baddb92 100644 --- a/tools/auto-tester/src/ui/AutoTester.cpp +++ b/tools/auto-tester/src/ui/AutoTester.cpp @@ -10,33 +10,26 @@ // #include "AutoTester.h" -AutoTester::AutoTester(QWidget *parent) - : QMainWindow(parent) -{ +AutoTester::AutoTester(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); } -void AutoTester::on_evaluateTestsButton_clicked() -{ +void AutoTester::on_evaluateTestsButton_clicked() { test.evaluateTests(); } -void AutoTester::on_evaluateTestsRecursivelyButton_clicked() -{ +void AutoTester::on_evaluateTestsRecursivelyButton_clicked() { test.evaluateTestsRecursively(); } -void AutoTester::on_createRecursiveScriptButton_clicked() -{ +void AutoTester::on_createRecursiveScriptButton_clicked() { test.createRecursiveScript(); } -void AutoTester::on_createTestButton_clicked() -{ +void AutoTester::on_createTestButton_clicked() { test.createTest(); } -void AutoTester::on_closeButton_clicked() -{ +void AutoTester::on_closeButton_clicked() { exit(0); } \ No newline at end of file diff --git a/tools/auto-tester/src/ui/AutoTester.h b/tools/auto-tester/src/ui/AutoTester.h index 31c26e0ef2..acfea32ba1 100644 --- a/tools/auto-tester/src/ui/AutoTester.h +++ b/tools/auto-tester/src/ui/AutoTester.h @@ -15,8 +15,7 @@ #include "ui_AutoTester.h" #include "../Test.h" -class AutoTester : public QMainWindow -{ +class AutoTester : public QMainWindow { Q_OBJECT public: diff --git a/tools/auto-tester/src/ui/MismatchWindow.cpp b/tools/auto-tester/src/ui/MismatchWindow.cpp index 09ad97a596..07664a1667 100644 --- a/tools/auto-tester/src/ui/MismatchWindow.cpp +++ b/tools/auto-tester/src/ui/MismatchWindow.cpp @@ -11,9 +11,7 @@ #include -MismatchWindow::MismatchWindow(QWidget *parent) - : QDialog(parent) -{ +MismatchWindow::MismatchWindow(QWidget *parent) : QDialog(parent) { setupUi(this); expectedImage->setScaledContents(true); @@ -32,20 +30,17 @@ void MismatchWindow::setTestFailure(TestFailure testFailure) { resultImage->setPixmap(QPixmap(testFailure._pathname + testFailure._actualImageFilename)); } -void MismatchWindow::on_passTestButton_clicked() -{ +void MismatchWindow::on_passTestButton_clicked() { _userResponse = USER_RESPONSE_PASS; close(); } -void MismatchWindow::on_failTestButton_clicked() -{ +void MismatchWindow::on_failTestButton_clicked() { _userResponse = USE_RESPONSE_FAIL; close(); } -void MismatchWindow::on_abortTestsButton_clicked() -{ +void MismatchWindow::on_abortTestsButton_clicked() { _userResponse = USER_RESPONSE_ABORT; close(); } From 4fd83ddd0edc5e07658b6561dab82d5fd499e3cb Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 4 Dec 2017 10:05:55 -0800 Subject: [PATCH 292/329] Reduce Image memory usage by moving the data --- libraries/baking/src/TextureBaker.cpp | 14 +- libraries/image/src/image/Image.cpp | 351 ++++++++++-------- libraries/image/src/image/Image.h | 36 +- .../src/model-networking/TextureCache.cpp | 6 +- 4 files changed, 231 insertions(+), 176 deletions(-) diff --git a/libraries/baking/src/TextureBaker.cpp b/libraries/baking/src/TextureBaker.cpp index 1a320efabc..5951e7c2e8 100644 --- a/libraries/baking/src/TextureBaker.cpp +++ b/libraries/baking/src/TextureBaker.cpp @@ -121,8 +121,15 @@ void TextureBaker::handleTextureNetworkReply() { } void TextureBaker::processTexture() { - auto processedTexture = image::processImage(_originalTexture, _textureURL.toString().toStdString(), + // the baked textures need to have the source hash added for cache checks in Interface + // so we add that to the processed texture before handling it off to be serialized + auto hashData = QCryptographicHash::hash(_originalTexture, QCryptographicHash::Md5); + std::string hash = hashData.toHex().toStdString(); + + // IMPORTANT: _originalTexture is empty past this point + auto processedTexture = image::processImage(std::move(_originalTexture), _textureURL.toString().toStdString(), ABSOLUTE_MAX_TEXTURE_NUM_PIXELS, _textureType, _abortProcessing); + processedTexture->setSourceHash(hash); if (shouldStop()) { return; @@ -133,11 +140,6 @@ void TextureBaker::processTexture() { return; } - // the baked textures need to have the source hash added for cache checks in Interface - // so we add that to the processed texture before handling it off to be serialized - auto hashData = QCryptographicHash::hash(_originalTexture, QCryptographicHash::Md5); - std::string hash = hashData.toHex().toStdString(); - processedTexture->setSourceHash(hash); auto memKTX = gpu::Texture::serialize(*processedTexture); diff --git a/libraries/image/src/image/Image.cpp b/libraries/image/src/image/Image.cpp index 9f584c844f..1236c19798 100644 --- a/libraries/image/src/image/Image.cpp +++ b/libraries/image/src/image/Image.cpp @@ -110,64 +110,64 @@ TextureUsage::TextureLoader TextureUsage::getTextureLoaderForType(Type type, con } } -gpu::TexturePointer TextureUsage::createStrict2DTextureFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::createStrict2DTextureFromImage(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return process2DTextureColorFromImage(srcImage, srcImageName, true, abortProcessing); + return process2DTextureColorFromImage(std::move(srcImage), srcImageName, true, abortProcessing); } -gpu::TexturePointer TextureUsage::create2DTextureFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::create2DTextureFromImage(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return process2DTextureColorFromImage(srcImage, srcImageName, false, abortProcessing); + return process2DTextureColorFromImage(std::move(srcImage), srcImageName, false, abortProcessing); } -gpu::TexturePointer TextureUsage::createAlbedoTextureFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::createAlbedoTextureFromImage(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return process2DTextureColorFromImage(srcImage, srcImageName, false, abortProcessing); + return process2DTextureColorFromImage(std::move(srcImage), srcImageName, false, abortProcessing); } -gpu::TexturePointer TextureUsage::createEmissiveTextureFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::createEmissiveTextureFromImage(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return process2DTextureColorFromImage(srcImage, srcImageName, false, abortProcessing); + return process2DTextureColorFromImage(std::move(srcImage), srcImageName, false, abortProcessing); } -gpu::TexturePointer TextureUsage::createLightmapTextureFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::createLightmapTextureFromImage(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return process2DTextureColorFromImage(srcImage, srcImageName, false, abortProcessing); + return process2DTextureColorFromImage(std::move(srcImage), srcImageName, false, abortProcessing); } -gpu::TexturePointer TextureUsage::createNormalTextureFromNormalImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::createNormalTextureFromNormalImage(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return process2DTextureNormalMapFromImage(srcImage, srcImageName, false, abortProcessing); + return process2DTextureNormalMapFromImage(std::move(srcImage), srcImageName, false, abortProcessing); } -gpu::TexturePointer TextureUsage::createNormalTextureFromBumpImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::createNormalTextureFromBumpImage(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return process2DTextureNormalMapFromImage(srcImage, srcImageName, true, abortProcessing); + return process2DTextureNormalMapFromImage(std::move(srcImage), srcImageName, true, abortProcessing); } -gpu::TexturePointer TextureUsage::createRoughnessTextureFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::createRoughnessTextureFromImage(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return process2DTextureGrayscaleFromImage(srcImage, srcImageName, false, abortProcessing); + return process2DTextureGrayscaleFromImage(std::move(srcImage), srcImageName, false, abortProcessing); } -gpu::TexturePointer TextureUsage::createRoughnessTextureFromGlossImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::createRoughnessTextureFromGlossImage(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return process2DTextureGrayscaleFromImage(srcImage, srcImageName, true, abortProcessing); + return process2DTextureGrayscaleFromImage(std::move(srcImage), srcImageName, true, abortProcessing); } -gpu::TexturePointer TextureUsage::createMetallicTextureFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::createMetallicTextureFromImage(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return process2DTextureGrayscaleFromImage(srcImage, srcImageName, false, abortProcessing); + return process2DTextureGrayscaleFromImage(std::move(srcImage), srcImageName, false, abortProcessing); } -gpu::TexturePointer TextureUsage::createCubeTextureFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::createCubeTextureFromImage(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return processCubeTextureColorFromImage(srcImage, srcImageName, true, abortProcessing); + return processCubeTextureColorFromImage(std::move(srcImage), srcImageName, true, abortProcessing); } -gpu::TexturePointer TextureUsage::createCubeTextureFromImageWithoutIrradiance(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::createCubeTextureFromImageWithoutIrradiance(QImage&& srcImage, const std::string& srcImageName, const std::atomic& abortProcessing) { - return processCubeTextureColorFromImage(srcImage, srcImageName, false, abortProcessing); + return processCubeTextureColorFromImage(std::move(srcImage), srcImageName, false, abortProcessing); } @@ -238,33 +238,43 @@ uint32 packR11G11B10F(const glm::vec3& color) { return glm::packF2x11_1x10(ucolor); } -gpu::TexturePointer processImage(const QByteArray& content, const std::string& filename, - int maxNumPixels, TextureUsage::Type textureType, - const std::atomic& abortProcessing) { +QImage processRawImageData(QByteArray&& content, const std::string& filename) { + // Take a local copy to force move construction + // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f18-for-consume-parameters-pass-by-x-and-stdmove-the-parameter + QByteArray localCopy = std::move(content); + // Help the QImage loader by extracting the image file format from the url filename ext. // Some tga are not created properly without it. auto filenameExtension = filename.substr(filename.find_last_of('.') + 1); QBuffer buffer; - buffer.setData(content); + buffer.setData(localCopy); QImageReader imageReader(&buffer, filenameExtension.c_str()); - QImage image; if (imageReader.canRead()) { - image = imageReader.read(); + return imageReader.read(); } else { // Extension could be incorrect, try to detect the format from the content QImageReader newImageReader; newImageReader.setDecideFormatFromContent(true); - buffer.setData(content); + buffer.setData(localCopy); newImageReader.setDevice(&buffer); if (newImageReader.canRead()) { qCWarning(imagelogging) << "Image file" << filename.c_str() << "has extension" << filenameExtension.c_str() - << "but is actually a" << qPrintable(newImageReader.format()) << "(recovering)"; - image = newImageReader.read(); + << "but is actually a" << qPrintable(newImageReader.format()) << "(recovering)"; + return newImageReader.read(); } } + return QImage(); +} + +gpu::TexturePointer processImage(QByteArray&& content, const std::string& filename, + int maxNumPixels, TextureUsage::Type textureType, + const std::atomic& abortProcessing) { + + QImage image = processRawImageData(std::move(content), filename); + int imageWidth = image.width(); int imageHeight = image.height(); @@ -282,22 +292,26 @@ gpu::TexturePointer processImage(const QByteArray& content, const std::string& f int originalHeight = imageHeight; imageWidth = (int)(scaleFactor * (float)imageWidth + 0.5f); imageHeight = (int)(scaleFactor * (float)imageHeight + 0.5f); - QImage newImage = image.scaled(QSize(imageWidth, imageHeight), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - image.swap(newImage); + image = image.scaled(QSize(imageWidth, imageHeight), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); qCDebug(imagelogging).nospace() << "Downscaled " << filename.c_str() << " (" << QSize(originalWidth, originalHeight) << " to " << QSize(imageWidth, imageHeight) << ")"; } auto loader = TextureUsage::getTextureLoaderForType(textureType); - auto texture = loader(image, filename, abortProcessing); + auto texture = loader(std::move(image), filename, abortProcessing); return texture; } -QImage processSourceImage(const QImage& srcImage, bool cubemap) { +QImage processSourceImage(QImage&& srcImage, bool cubemap) { PROFILE_RANGE(resource_parse, "processSourceImage"); - const glm::uvec2 srcImageSize = toGlm(srcImage.size()); + + // Take a local copy to force move construction + // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f18-for-consume-parameters-pass-by-x-and-stdmove-the-parameter + QImage localCopy = std::move(srcImage); + + const glm::uvec2 srcImageSize = toGlm(localCopy.size()); glm::uvec2 targetSize = srcImageSize; while (glm::any(glm::greaterThan(targetSize, MAX_TEXTURE_SIZE))) { @@ -319,10 +333,10 @@ QImage processSourceImage(const QImage& srcImage, bool cubemap) { if (targetSize != srcImageSize) { PROFILE_RANGE(resource_parse, "processSourceImage Rectify"); qCDebug(imagelogging) << "Resizing texture from " << srcImageSize.x << "x" << srcImageSize.y << " to " << targetSize.x << "x" << targetSize.y; - return srcImage.scaled(fromGlm(targetSize), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + return localCopy.scaled(fromGlm(targetSize), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); } - return srcImage; + return localCopy; } #if defined(NVTT_API) @@ -429,10 +443,14 @@ public: } }; -void generateHDRMips(gpu::Texture* texture, const QImage& image, const std::atomic& abortProcessing, int face) { - assert(image.format() == QIMAGE_HDR_FORMAT); +void generateHDRMips(gpu::Texture* texture, QImage&& image, const std::atomic& abortProcessing, int face) { + // Take a local copy to force move construction + // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f18-for-consume-parameters-pass-by-x-and-stdmove-the-parameter + QImage localCopy = std::move(image); - const int width = image.width(), height = image.height(); + assert(localCopy.format() == QIMAGE_HDR_FORMAT); + + const int width = localCopy.width(), height = localCopy.height(); std::vector data; std::vector::iterator dataIt; auto mipFormat = texture->getStoredMipFormat(); @@ -471,10 +489,10 @@ void generateHDRMips(gpu::Texture* texture, const QImage& image, const std::atom return; } - data.resize(width*height); + data.resize(width * height); dataIt = data.begin(); for (auto lineNb = 0; lineNb < height; lineNb++) { - const uint32* srcPixelIt = reinterpret_cast( image.constScanLine(lineNb) ); + const uint32* srcPixelIt = reinterpret_cast(localCopy.constScanLine(lineNb)); const uint32* srcPixelEnd = srcPixelIt + width; while (srcPixelIt < srcPixelEnd) { @@ -485,6 +503,9 @@ void generateHDRMips(gpu::Texture* texture, const QImage& image, const std::atom } assert(dataIt == data.end()); + // We're done with the localCopy, free up the memory to avoid bloating the heap + localCopy = QImage(); // QImage doesn't have a clear function, so override it with an empty one. + nvtt::OutputOptions outputOptions; outputOptions.setOutputHeader(false); std::unique_ptr outputHandler; @@ -497,7 +518,7 @@ void generateHDRMips(gpu::Texture* texture, const QImage& image, const std::atom // Don't use NVTT (at least version 2.1) as it outputs wrong RGB9E5 and R11G11B10F values from floats outputHandler.reset(new PackedFloatOutputHandler(texture, face, mipFormat)); } else { - outputHandler.reset( new OutputHandler(texture, face) ); + outputHandler.reset(new OutputHandler(texture, face)); } outputOptions.setOutputHandler(outputHandler.get()); @@ -518,13 +539,17 @@ void generateHDRMips(gpu::Texture* texture, const QImage& image, const std::atom } } -void generateLDRMips(gpu::Texture* texture, QImage& image, const std::atomic& abortProcessing, int face) { - if (image.format() != QImage::Format_ARGB32) { - image = image.convertToFormat(QImage::Format_ARGB32); +void generateLDRMips(gpu::Texture* texture, QImage&& image, const std::atomic& abortProcessing, int face) { + // Take a local copy to force move construction + // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f18-for-consume-parameters-pass-by-x-and-stdmove-the-parameter + QImage localCopy = std::move(image); + + if (localCopy.format() != QImage::Format_ARGB32) { + localCopy = localCopy.convertToFormat(QImage::Format_ARGB32); } - const int width = image.width(), height = image.height(); - const void* data = static_cast(image.constBits()); + const int width = localCopy.width(), height = localCopy.height(); + const void* data = static_cast(localCopy.constBits()); nvtt::TextureType textureType = nvtt::TextureType_2D; nvtt::InputFormat inputFormat = nvtt::InputFormat_BGRA_8UB; @@ -537,7 +562,11 @@ void generateLDRMips(gpu::Texture* texture, QImage& image, const std::atomic& abortProcessing = false, int face = -1) { +void generateMips(gpu::Texture* texture, QImage&& image, const std::atomic& abortProcessing = false, int face = -1) { #if CPU_MIPMAPS PROFILE_RANGE(resource_parse, "generateMips"); if (image.format() == QIMAGE_HDR_FORMAT) { - generateHDRMips(texture, image, abortProcessing, face); + generateHDRMips(texture, std::move(image), abortProcessing, face); } else { - generateLDRMips(texture, image, abortProcessing, face); + generateLDRMips(texture, std::move(image), abortProcessing, face); } #else texture->setAutoGenerateMips(true); @@ -682,10 +711,11 @@ void processTextureAlpha(const QImage& srcImage, bool& validAlpha, bool& alphaAs validAlpha = (numOpaques != NUM_PIXELS); } -gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(QImage&& srcImage, const std::string& srcImageName, bool isStrict, const std::atomic& abortProcessing) { PROFILE_RANGE(resource_parse, "process2DTextureColorFromImage"); - QImage image = processSourceImage(srcImage, false); + QImage image = processSourceImage(std::move(srcImage), false); + bool validAlpha = image.hasAlphaChannel(); bool alphaAsMask = false; @@ -731,7 +761,7 @@ gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(const QImage& s } theTexture->setUsage(usage.build()); theTexture->setStoredMipFormat(formatMip); - generateMips(theTexture.get(), image, abortProcessing); + generateMips(theTexture.get(), std::move(image), abortProcessing); } return theTexture; @@ -749,16 +779,20 @@ double mapComponent(double sobelValue) { return (sobelValue + 1.0) * factor; } -QImage processBumpMap(QImage& image) { - if (image.format() != QImage::Format_Grayscale8) { - image = image.convertToFormat(QImage::Format_Grayscale8); +QImage processBumpMap(QImage&& image) { + // Take a local copy to force move construction + // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f18-for-consume-parameters-pass-by-x-and-stdmove-the-parameter + QImage localCopy = std::move(image); + + if (localCopy.format() != QImage::Format_Grayscale8) { + localCopy = localCopy.convertToFormat(QImage::Format_Grayscale8); } // PR 5540 by AlessandroSigna integrated here as a specialized TextureLoader for bumpmaps // The conversion is done using the Sobel Filter to calculate the derivatives from the grayscale image const double pStrength = 2.0; - int width = image.width(); - int height = image.height(); + int width = localCopy.width(); + int height = localCopy.height(); QImage result(width, height, QImage::Format_ARGB32); @@ -771,14 +805,14 @@ QImage processBumpMap(QImage& image) { const int jPrevClamped = clampPixelCoordinate(j - 1, height - 1); // surrounding pixels - const QRgb topLeft = image.pixel(iPrevClamped, jPrevClamped); - const QRgb top = image.pixel(iPrevClamped, j); - const QRgb topRight = image.pixel(iPrevClamped, jNextClamped); - const QRgb right = image.pixel(i, jNextClamped); - const QRgb bottomRight = image.pixel(iNextClamped, jNextClamped); - const QRgb bottom = image.pixel(iNextClamped, j); - const QRgb bottomLeft = image.pixel(iNextClamped, jPrevClamped); - const QRgb left = image.pixel(i, jPrevClamped); + const QRgb topLeft = localCopy.pixel(iPrevClamped, jPrevClamped); + const QRgb top = localCopy.pixel(iPrevClamped, j); + const QRgb topRight = localCopy.pixel(iPrevClamped, jNextClamped); + const QRgb right = localCopy.pixel(i, jNextClamped); + const QRgb bottomRight = localCopy.pixel(iNextClamped, jNextClamped); + const QRgb bottom = localCopy.pixel(iNextClamped, j); + const QRgb bottomLeft = localCopy.pixel(iNextClamped, jPrevClamped); + const QRgb left = localCopy.pixel(i, jPrevClamped); // take their gray intensities // since it's a grayscale image, the value of each component RGB is the same @@ -807,13 +841,13 @@ QImage processBumpMap(QImage& image) { return result; } -gpu::TexturePointer TextureUsage::process2DTextureNormalMapFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::process2DTextureNormalMapFromImage(QImage&& srcImage, const std::string& srcImageName, bool isBumpMap, const std::atomic& abortProcessing) { PROFILE_RANGE(resource_parse, "process2DTextureNormalMapFromImage"); - QImage image = processSourceImage(srcImage, false); + QImage image = processSourceImage(std::move(srcImage), false); if (isBumpMap) { - image = processBumpMap(image); + image = processBumpMap(std::move(image)); } // Make sure the normal map source image is ARGB32 @@ -833,17 +867,17 @@ gpu::TexturePointer TextureUsage::process2DTextureNormalMapFromImage(const QImag theTexture = gpu::Texture::create2D(formatGPU, image.width(), image.height(), gpu::Texture::MAX_NUM_MIPS, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_MIP_LINEAR)); theTexture->setSource(srcImageName); theTexture->setStoredMipFormat(formatMip); - generateMips(theTexture.get(), image, abortProcessing); + generateMips(theTexture.get(), std::move(image), abortProcessing); } return theTexture; } -gpu::TexturePointer TextureUsage::process2DTextureGrayscaleFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::process2DTextureGrayscaleFromImage(QImage&& srcImage, const std::string& srcImageName, bool isInvertedPixels, const std::atomic& abortProcessing) { PROFILE_RANGE(resource_parse, "process2DTextureGrayscaleFromImage"); - QImage image = processSourceImage(srcImage, false); + QImage image = processSourceImage(std::move(srcImage), false); if (image.format() != QImage::Format_ARGB32) { image = image.convertToFormat(QImage::Format_ARGB32); @@ -869,7 +903,7 @@ gpu::TexturePointer TextureUsage::process2DTextureGrayscaleFromImage(const QImag theTexture = gpu::Texture::create2D(formatGPU, image.width(), image.height(), gpu::Texture::MAX_NUM_MIPS, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_MIP_LINEAR)); theTexture->setSource(srcImageName); theTexture->setStoredMipFormat(formatMip); - generateMips(theTexture.get(), image, abortProcessing); + generateMips(theTexture.get(), std::move(image), abortProcessing); } return theTexture; @@ -939,7 +973,7 @@ public: static QImage extractEquirectangularFace(const QImage& source, gpu::Texture::CubeFace face, int faceWidth) { QImage image(faceWidth, faceWidth, source.format()); - glm::vec2 dstInvSize(1.0f / (float)image.width(), 1.0f / (float)image.height()); + glm::vec2 dstInvSize(1.0f / (float)source.width(), 1.0f / (float)source.height()); struct CubeToXYZ { gpu::Texture::CubeFace _face; @@ -1142,8 +1176,12 @@ const int CubeLayout::NUM_CUBEMAP_LAYOUTS = sizeof(CubeLayout::CUBEMAP_LAYOUTS) //#define DEBUG_COLOR_PACKING -QImage convertToHDRFormat(QImage srcImage, gpu::Element format) { - QImage hdrImage(srcImage.width(), srcImage.height(), (QImage::Format)QIMAGE_HDR_FORMAT); +QImage convertToHDRFormat(QImage&& srcImage, gpu::Element format) { + // Take a local copy to force move construction + // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f18-for-consume-parameters-pass-by-x-and-stdmove-the-parameter + QImage localCopy = std::move(srcImage); + + QImage hdrImage(localCopy.width(), localCopy.height(), (QImage::Format)QIMAGE_HDR_FORMAT); std::function packFunc; #ifdef DEBUG_COLOR_PACKING std::function unpackFunc; @@ -1165,13 +1203,13 @@ QImage convertToHDRFormat(QImage srcImage, gpu::Element format) { default: qCWarning(imagelogging) << "Unsupported HDR format"; Q_UNREACHABLE(); - return srcImage; + return localCopy; } - srcImage = srcImage.convertToFormat(QImage::Format_ARGB32); - for (auto y = 0; y < srcImage.height(); y++) { - const QRgb* srcLineIt = reinterpret_cast( srcImage.constScanLine(y) ); - const QRgb* srcLineEnd = srcLineIt + srcImage.width(); + localCopy = localCopy.convertToFormat(QImage::Format_ARGB32); + for (auto y = 0; y < localCopy.height(); y++) { + const QRgb* srcLineIt = reinterpret_cast( localCopy.constScanLine(y) ); + const QRgb* srcLineEnd = srcLineIt + localCopy.width(); uint32* hdrLineIt = reinterpret_cast( hdrImage.scanLine(y) ); glm::vec3 color; @@ -1196,86 +1234,99 @@ QImage convertToHDRFormat(QImage srcImage, gpu::Element format) { return hdrImage; } -gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(const QImage& srcImage, const std::string& srcImageName, +gpu::TexturePointer TextureUsage::processCubeTextureColorFromImage(QImage&& srcImage, const std::string& srcImageName, bool generateIrradiance, const std::atomic& abortProcessing) { PROFILE_RANGE(resource_parse, "processCubeTextureColorFromImage"); + // Take a local copy to force move construction + // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f18-for-consume-parameters-pass-by-x-and-stdmove-the-parameter + QImage localCopy = std::move(srcImage); + + int originalWidth = localCopy.width(); + int originalHeight = localCopy.height(); + if ((originalWidth <= 0) && (originalHeight <= 0)) { + return nullptr; + } + gpu::TexturePointer theTexture = nullptr; - if ((srcImage.width() > 0) && (srcImage.height() > 0)) { - QImage image = processSourceImage(srcImage, true); - if (image.format() != QIMAGE_HDR_FORMAT) { - image = convertToHDRFormat(image, HDR_FORMAT); + QImage image = processSourceImage(std::move(localCopy), true); + + if (image.format() != QIMAGE_HDR_FORMAT) { + image = convertToHDRFormat(std::move(image), HDR_FORMAT); + } + + gpu::Element formatMip; + gpu::Element formatGPU; + if (isCubeTexturesCompressionEnabled()) { + formatMip = gpu::Element::COLOR_COMPRESSED_HDR_RGB; + formatGPU = gpu::Element::COLOR_COMPRESSED_HDR_RGB; + } else { + formatMip = HDR_FORMAT; + formatGPU = HDR_FORMAT; + } + + // Find the layout of the cubemap in the 2D image + // Use the original image size since processSourceImage may have altered the size / aspect ratio + int foundLayout = CubeLayout::findLayout(originalWidth, originalHeight); + + if (foundLayout < 0) { + qCDebug(imagelogging) << "Failed to find a known cube map layout from this image:" << QString(srcImageName.c_str()); + return nullptr; + } + + std::vector faces; + + // If found, go extract the faces as separate images + auto& layout = CubeLayout::CUBEMAP_LAYOUTS[foundLayout]; + if (layout._type == CubeLayout::FLAT) { + int faceWidth = image.width() / layout._widthRatio; + + faces.push_back(image.copy(QRect(layout._faceXPos._x * faceWidth, layout._faceXPos._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceXPos._horizontalMirror, layout._faceXPos._verticalMirror)); + faces.push_back(image.copy(QRect(layout._faceXNeg._x * faceWidth, layout._faceXNeg._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceXNeg._horizontalMirror, layout._faceXNeg._verticalMirror)); + faces.push_back(image.copy(QRect(layout._faceYPos._x * faceWidth, layout._faceYPos._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceYPos._horizontalMirror, layout._faceYPos._verticalMirror)); + faces.push_back(image.copy(QRect(layout._faceYNeg._x * faceWidth, layout._faceYNeg._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceYNeg._horizontalMirror, layout._faceYNeg._verticalMirror)); + faces.push_back(image.copy(QRect(layout._faceZPos._x * faceWidth, layout._faceZPos._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceZPos._horizontalMirror, layout._faceZPos._verticalMirror)); + faces.push_back(image.copy(QRect(layout._faceZNeg._x * faceWidth, layout._faceZNeg._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceZNeg._horizontalMirror, layout._faceZNeg._verticalMirror)); + } else if (layout._type == CubeLayout::EQUIRECTANGULAR) { + // THe face width is estimated from the input image + const int EQUIRECT_FACE_RATIO_TO_WIDTH = 4; + const int EQUIRECT_MAX_FACE_WIDTH = 2048; + int faceWidth = std::min(image.width() / EQUIRECT_FACE_RATIO_TO_WIDTH, EQUIRECT_MAX_FACE_WIDTH); + for (int face = gpu::Texture::CUBE_FACE_RIGHT_POS_X; face < gpu::Texture::NUM_CUBE_FACES; face++) { + QImage faceImage = CubeLayout::extractEquirectangularFace(std::move(image), (gpu::Texture::CubeFace) face, faceWidth); + faces.push_back(std::move(faceImage)); } + } - gpu::Element formatMip; - gpu::Element formatGPU; - if (isCubeTexturesCompressionEnabled()) { - formatMip = gpu::Element::COLOR_COMPRESSED_HDR_RGB; - formatGPU = gpu::Element::COLOR_COMPRESSED_HDR_RGB; - } else { - formatMip = HDR_FORMAT; - formatGPU = HDR_FORMAT; - } + // free up the memory afterward to avoid bloating the heap + image = QImage(); // QImage doesn't have a clear function, so override it with an empty one. - // Find the layout of the cubemap in the 2D image - // Use the original image size since processSourceImage may have altered the size / aspect ratio - int foundLayout = CubeLayout::findLayout(srcImage.width(), srcImage.height()); - - std::vector faces; - // If found, go extract the faces as separate images - if (foundLayout >= 0) { - auto& layout = CubeLayout::CUBEMAP_LAYOUTS[foundLayout]; - if (layout._type == CubeLayout::FLAT) { - int faceWidth = image.width() / layout._widthRatio; - - faces.push_back(image.copy(QRect(layout._faceXPos._x * faceWidth, layout._faceXPos._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceXPos._horizontalMirror, layout._faceXPos._verticalMirror)); - faces.push_back(image.copy(QRect(layout._faceXNeg._x * faceWidth, layout._faceXNeg._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceXNeg._horizontalMirror, layout._faceXNeg._verticalMirror)); - faces.push_back(image.copy(QRect(layout._faceYPos._x * faceWidth, layout._faceYPos._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceYPos._horizontalMirror, layout._faceYPos._verticalMirror)); - faces.push_back(image.copy(QRect(layout._faceYNeg._x * faceWidth, layout._faceYNeg._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceYNeg._horizontalMirror, layout._faceYNeg._verticalMirror)); - faces.push_back(image.copy(QRect(layout._faceZPos._x * faceWidth, layout._faceZPos._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceZPos._horizontalMirror, layout._faceZPos._verticalMirror)); - faces.push_back(image.copy(QRect(layout._faceZNeg._x * faceWidth, layout._faceZNeg._y * faceWidth, faceWidth, faceWidth)).mirrored(layout._faceZNeg._horizontalMirror, layout._faceZNeg._verticalMirror)); - } else if (layout._type == CubeLayout::EQUIRECTANGULAR) { - // THe face width is estimated from the input image - const int EQUIRECT_FACE_RATIO_TO_WIDTH = 4; - const int EQUIRECT_MAX_FACE_WIDTH = 2048; - int faceWidth = std::min(image.width() / EQUIRECT_FACE_RATIO_TO_WIDTH, EQUIRECT_MAX_FACE_WIDTH); - for (int face = gpu::Texture::CUBE_FACE_RIGHT_POS_X; face < gpu::Texture::NUM_CUBE_FACES; face++) { - QImage faceImage = CubeLayout::extractEquirectangularFace(image, (gpu::Texture::CubeFace) face, faceWidth); - faces.push_back(faceImage); - } - } - } else { - qCDebug(imagelogging) << "Failed to find a known cube map layout from this image:" << QString(srcImageName.c_str()); - return nullptr; - } - - // If the 6 faces have been created go on and define the true Texture - if (faces.size() == gpu::Texture::NUM_FACES_PER_TYPE[gpu::Texture::TEX_CUBE]) { - theTexture = gpu::Texture::createCube(formatGPU, faces[0].width(), gpu::Texture::MAX_NUM_MIPS, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_MIP_LINEAR, gpu::Sampler::WRAP_CLAMP)); - theTexture->setSource(srcImageName); - theTexture->setStoredMipFormat(formatMip); + // If the 6 faces have been created go on and define the true Texture + if (faces.size() == gpu::Texture::NUM_FACES_PER_TYPE[gpu::Texture::TEX_CUBE]) { + theTexture = gpu::Texture::createCube(formatGPU, faces[0].width(), gpu::Texture::MAX_NUM_MIPS, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_MIP_LINEAR, gpu::Sampler::WRAP_CLAMP)); + theTexture->setSource(srcImageName); + theTexture->setStoredMipFormat(formatMip); + // Generate irradiance while we are at it + if (generateIrradiance) { + PROFILE_RANGE(resource_parse, "generateIrradiance"); + auto irradianceTexture = gpu::Texture::createCube(HDR_FORMAT, faces[0].width(), gpu::Texture::MAX_NUM_MIPS, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_MIP_LINEAR, gpu::Sampler::WRAP_CLAMP)); + irradianceTexture->setSource(srcImageName); + irradianceTexture->setStoredMipFormat(HDR_FORMAT); for (uint8 face = 0; face < faces.size(); ++face) { - generateMips(theTexture.get(), faces[face], abortProcessing, face); + irradianceTexture->assignStoredMipFace(0, face, faces[face].byteCount(), faces[face].constBits()); } - // Generate irradiance while we are at it - if (generateIrradiance) { - PROFILE_RANGE(resource_parse, "generateIrradiance"); - auto irradianceTexture = gpu::Texture::createCube(HDR_FORMAT, faces[0].width(), gpu::Texture::MAX_NUM_MIPS, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_MIP_LINEAR, gpu::Sampler::WRAP_CLAMP)); - irradianceTexture->setSource(srcImageName); - irradianceTexture->setStoredMipFormat(HDR_FORMAT); - for (uint8 face = 0; face < faces.size(); ++face) { - irradianceTexture->assignStoredMipFace(0, face, faces[face].byteCount(), faces[face].constBits()); - } + irradianceTexture->generateIrradiance(); - irradianceTexture->generateIrradiance(); + auto irradiance = irradianceTexture->getIrradiance(); + theTexture->overrideIrradiance(irradiance); + } - auto irradiance = irradianceTexture->getIrradiance(); - theTexture->overrideIrradiance(irradiance); - } + for (uint8 face = 0; face < faces.size(); ++face) { + generateMips(theTexture.get(), std::move(faces[face]), abortProcessing, face); } } diff --git a/libraries/image/src/image/Image.h b/libraries/image/src/image/Image.h index 856dc009cf..43a4c30a7b 100644 --- a/libraries/image/src/image/Image.h +++ b/libraries/image/src/image/Image.h @@ -41,41 +41,41 @@ enum Type { UNUSED_TEXTURE }; -using TextureLoader = std::function&)>; +using TextureLoader = std::function&)>; TextureLoader getTextureLoaderForType(Type type, const QVariantMap& options = QVariantMap()); -gpu::TexturePointer create2DTextureFromImage(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer create2DTextureFromImage(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer createStrict2DTextureFromImage(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer createStrict2DTextureFromImage(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer createAlbedoTextureFromImage(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer createAlbedoTextureFromImage(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer createEmissiveTextureFromImage(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer createEmissiveTextureFromImage(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer createNormalTextureFromNormalImage(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer createNormalTextureFromNormalImage(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer createNormalTextureFromBumpImage(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer createNormalTextureFromBumpImage(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer createRoughnessTextureFromImage(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer createRoughnessTextureFromImage(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer createRoughnessTextureFromGlossImage(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer createRoughnessTextureFromGlossImage(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer createMetallicTextureFromImage(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer createMetallicTextureFromImage(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer createCubeTextureFromImage(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer createCubeTextureFromImage(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer createCubeTextureFromImageWithoutIrradiance(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer createCubeTextureFromImageWithoutIrradiance(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer createLightmapTextureFromImage(const QImage& image, const std::string& srcImageName, +gpu::TexturePointer createLightmapTextureFromImage(QImage&& image, const std::string& srcImageName, const std::atomic& abortProcessing); -gpu::TexturePointer process2DTextureColorFromImage(const QImage& srcImage, const std::string& srcImageName, bool isStrict, +gpu::TexturePointer process2DTextureColorFromImage(QImage&& srcImage, const std::string& srcImageName, bool isStrict, const std::atomic& abortProcessing); -gpu::TexturePointer process2DTextureNormalMapFromImage(const QImage& srcImage, const std::string& srcImageName, bool isBumpMap, +gpu::TexturePointer process2DTextureNormalMapFromImage(QImage&& srcImage, const std::string& srcImageName, bool isBumpMap, const std::atomic& abortProcessing); -gpu::TexturePointer process2DTextureGrayscaleFromImage(const QImage& srcImage, const std::string& srcImageName, bool isInvertedPixels, +gpu::TexturePointer process2DTextureGrayscaleFromImage(QImage&& srcImage, const std::string& srcImageName, bool isInvertedPixels, const std::atomic& abortProcessing); -gpu::TexturePointer processCubeTextureColorFromImage(const QImage& srcImage, const std::string& srcImageName, bool generateIrradiance, +gpu::TexturePointer processCubeTextureColorFromImage(QImage&& srcImage, const std::string& srcImageName, bool generateIrradiance, const std::atomic& abortProcessing); } // namespace TextureUsage @@ -90,7 +90,7 @@ void setNormalTexturesCompressionEnabled(bool enabled); void setGrayscaleTexturesCompressionEnabled(bool enabled); void setCubeTexturesCompressionEnabled(bool enabled); -gpu::TexturePointer processImage(const QByteArray& content, const std::string& url, +gpu::TexturePointer processImage(QByteArray&& content, const std::string& url, int maxNumPixels, TextureUsage::Type textureType, const std::atomic& abortProcessing = false); diff --git a/libraries/model-networking/src/model-networking/TextureCache.cpp b/libraries/model-networking/src/model-networking/TextureCache.cpp index d25c5225d6..b8f81dc7a4 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.cpp +++ b/libraries/model-networking/src/model-networking/TextureCache.cpp @@ -264,7 +264,7 @@ gpu::TexturePointer getFallbackTextureForType(image::TextureUsage::Type type) { gpu::TexturePointer TextureCache::getImageTexture(const QString& path, image::TextureUsage::Type type, QVariantMap options) { QImage image = QImage(path); auto loader = image::TextureUsage::getTextureLoaderForType(type, options); - return gpu::TexturePointer(loader(image, QUrl::fromLocalFile(path).fileName().toStdString(), false)); + return gpu::TexturePointer(loader(std::move(image), QUrl::fromLocalFile(path).fileName().toStdString(), false)); } QSharedPointer TextureCache::createResource(const QUrl& url, const QSharedPointer& fallback, @@ -954,7 +954,9 @@ void ImageReader::read() { gpu::TexturePointer texture; { PROFILE_RANGE_EX(resource_parse_image_raw, __FUNCTION__, 0xffff0000, 0); - texture = image::processImage(_content, _url.toString().toStdString(), _maxNumPixels, networkTexture->getTextureType()); + + // IMPORTANT: _content is empty past this point + texture = image::processImage(std::move(_content), _url.toString().toStdString(), _maxNumPixels, networkTexture->getTextureType()); if (!texture) { qCWarning(modelnetworking) << "Could not process:" << _url; From d6ac0dc3c2990767a64f5a72d78d953857c1ba99 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Thu, 7 Dec 2017 12:54:08 -0800 Subject: [PATCH 293/329] CR - indentation --- libraries/image/src/image/Image.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/image/src/image/Image.cpp b/libraries/image/src/image/Image.cpp index 1236c19798..ae5da9e423 100644 --- a/libraries/image/src/image/Image.cpp +++ b/libraries/image/src/image/Image.cpp @@ -261,7 +261,7 @@ QImage processRawImageData(QByteArray&& content, const std::string& filename) { if (newImageReader.canRead()) { qCWarning(imagelogging) << "Image file" << filename.c_str() << "has extension" << filenameExtension.c_str() - << "but is actually a" << qPrintable(newImageReader.format()) << "(recovering)"; + << "but is actually a" << qPrintable(newImageReader.format()) << "(recovering)"; return newImageReader.read(); } } From fd38b89f35383d1847be5174a08b4625bae07f0f Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 8 Dec 2017 10:58:52 +1300 Subject: [PATCH 294/329] Move mouse and hover slots out of Overlays API --- interface/src/ui/overlays/Overlays.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/interface/src/ui/overlays/Overlays.h b/interface/src/ui/overlays/Overlays.h index a8f504bbc5..e1996e6bfc 100644 --- a/interface/src/ui/overlays/Overlays.h +++ b/interface/src/ui/overlays/Overlays.h @@ -305,13 +305,6 @@ public slots: OverlayID getKeyboardFocusOverlay(); void setKeyboardFocusOverlay(const OverlayID& id); - void mousePressPointerEvent(const OverlayID& overlayID, const PointerEvent& event); - void mouseMovePointerEvent(const OverlayID& overlayID, const PointerEvent& event); - void mouseReleasePointerEvent(const OverlayID& overlayID, const PointerEvent& event); - void hoverEnterPointerEvent(const OverlayID& overlayID, const PointerEvent& event); - void hoverOverPointerEvent(const OverlayID& overlayID, const PointerEvent& event); - void hoverLeavePointerEvent(const OverlayID& overlayID, const PointerEvent& event); - signals: /**jsdoc * Emitted when an overlay is deleted @@ -358,6 +351,14 @@ private: OverlayID _currentHoverOverOverlayID { UNKNOWN_OVERLAY_ID }; RayToOverlayIntersectionResult findRayIntersectionForMouseEvent(PickRay ray); + +private slots: + void mousePressPointerEvent(const OverlayID& overlayID, const PointerEvent& event); + void mouseMovePointerEvent(const OverlayID& overlayID, const PointerEvent& event); + void mouseReleasePointerEvent(const OverlayID& overlayID, const PointerEvent& event); + void hoverEnterPointerEvent(const OverlayID& overlayID, const PointerEvent& event); + void hoverOverPointerEvent(const OverlayID& overlayID, const PointerEvent& event); + void hoverLeavePointerEvent(const OverlayID& overlayID, const PointerEvent& event); }; #endif // hifi_Overlays_h From 4ce784291c71b8bbeebf1f1fdeb9d8c7d684d7bc Mon Sep 17 00:00:00 2001 From: H Q Date: Thu, 7 Dec 2017 14:11:20 -0800 Subject: [PATCH 295/329] Provides a nice alert in case of insufficient funds to make a purchase --- interface/resources/qml/hifi/commerce/checkout/Checkout.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/commerce/checkout/Checkout.qml b/interface/resources/qml/hifi/commerce/checkout/Checkout.qml index c8a63a4d2d..a058f32994 100644 --- a/interface/resources/qml/hifi/commerce/checkout/Checkout.qml +++ b/interface/resources/qml/hifi/commerce/checkout/Checkout.qml @@ -905,7 +905,7 @@ Rectangle { } buyTextContainer.color = "#FFC3CD"; buyTextContainer.border.color = "#F3808F"; - buyGlyph.text = hifi.glyphs.error; + buyGlyph.text = hifi.glyphs.alert; buyGlyph.size = 54; } else { if (root.alreadyOwned) { From 6148458aeb274f3247e8c2a39ae61e51231eb6b7 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 7 Dec 2017 16:04:08 -0800 Subject: [PATCH 296/329] Workable state, need final clean up and testing --- .../scripting/SelectionScriptingInterface.h | 20 ++++-- libraries/render/src/render/HighlightStyle.h | 6 +- .../developer/utilities/render/highlight2.qml | 72 +++++++++++++++---- 3 files changed, 77 insertions(+), 21 deletions(-) diff --git a/interface/src/scripting/SelectionScriptingInterface.h b/interface/src/scripting/SelectionScriptingInterface.h index a05ddaa62c..75bddbe62d 100644 --- a/interface/src/scripting/SelectionScriptingInterface.h +++ b/interface/src/scripting/SelectionScriptingInterface.h @@ -59,8 +59,6 @@ public: public slots: void selectedItemsListChanged(const QString& listName); - // void highlightStyleChanged(const QString& listName); - // void highlightStyleRemoved(const QString& listName); private: QString _listName{ "" }; @@ -90,6 +88,11 @@ class SelectionScriptingInterface : public QObject, public Dependency { public: SelectionScriptingInterface(); + /**jsdoc + * Query the names of all the selection lists + * @function Selection.getListNames + * @return An array of names of all the selection lists + */ Q_INVOKABLE QStringList getListNames() const; /**jsdoc @@ -126,8 +129,6 @@ public: */ Q_INVOKABLE bool clearSelectedItemsList(const QString& listName); - - /**jsdoc * Prints out the list of avatars, entities and overlays stored in a particular selection. * @function Selection.printList @@ -139,11 +140,18 @@ public: * Query the list of avatars, entities and overlays stored in a particular selection. * @function Selection.getList * @param listName {string} name of the selection - * @return + * @return a js object containing the following properties (if the array of obkjects are not empty): + * - "entities": [ and array of the entityID of the entities in the selection] + * - "avatars": [ and array of the avatarID of the avatars in the selection] + * - "overlays": [ and array of the overlayID of the overlays in the selection] */ Q_INVOKABLE QVariantMap getSelectedItemsList(const QString& listName) const; - // + /**jsdoc + * Query the names of the highlighted selection lists + * @function Selection.getHighlightedListNames + * @return An array of names of the selection list currently highlight enabled + */ Q_INVOKABLE QStringList getHighlightedListNames() const; /**jsdoc diff --git a/libraries/render/src/render/HighlightStyle.h b/libraries/render/src/render/HighlightStyle.h index 1243f5aa60..981b43429a 100644 --- a/libraries/render/src/render/HighlightStyle.h +++ b/libraries/render/src/render/HighlightStyle.h @@ -26,9 +26,9 @@ namespace render { }; RGBA _outlineUnoccluded{ { 1.f, 0.7f, 0.2f }, 0.9f }; - RGBA _outlineOccluded{ { 0.2f, 0.7f, 1.0f }, 0.9f }; - RGBA _fillUnoccluded{ { 1.f, 0.2f, 0.7f }, 0.0f }; - RGBA _fillOccluded{ { 0.7f, 1.f, 0.2f }, 0.0f }; + RGBA _outlineOccluded{ { 1.f, 0.7f, 0.2f }, 0.9f }; + RGBA _fillUnoccluded{ { 0.2f, 0.7f, 1.0f }, 0.0f }; + RGBA _fillOccluded{ { 0.2f, 0.7f, 1.0f }, 0.0f }; float _outlineWidth{ 2.0f }; bool _isOutlineSmooth{ false }; diff --git a/scripts/developer/utilities/render/highlight2.qml b/scripts/developer/utilities/render/highlight2.qml index b22cfd4033..af478723fa 100644 --- a/scripts/developer/utilities/render/highlight2.qml +++ b/scripts/developer/utilities/render/highlight2.qml @@ -29,14 +29,18 @@ Item { signal sendToScript(var message); Component.onCompleted: { + // Connect the signal from Selection when any selection content change and use it to refresh the current selection view + Selection.selectedItemsListChanged.connect(resetSelectionView) + } + + function resetSelectionView() { + selectionView.resetSelectionView(); } - Column { id: col spacing: 5 - anchors.left: root.left - anchors.right: root.right + anchors.fill: root anchors.margins: hifi.dimensions.contentMargin.x Row { @@ -50,6 +54,7 @@ Item { id: debug text: "Refresh" height: 24 + width: 82 onClicked: { print("list of highlight styles") root.styleList = Selection.getHighlightedListNames() @@ -57,13 +62,14 @@ Item { print(root.styleList) styleSelectorLoader.sourceComponent = undefined; styleSelectorLoader.sourceComponent = selectorWidget; + resetSelectionView(); } } Loader { id: styleSelectorLoader sourceComponent: selectorWidget - width: 350 + width: 300 anchors.right: parent.right } Component { @@ -79,11 +85,12 @@ Item { Timer { id: postpone interval: 100; running: false; repeat: false - onTriggered: { styleWidgetLoader.sourceComponent = styleWidget } + onTriggered: { + styleWidgetLoader.sourceComponent = styleWidget + } } onCurrentIndexChanged: { root.listName = model[currentIndex]; - // sendToScript("highlight "+currentIndex) // This is a hack to be sure the widgets below properly reflect the change of category: delete the Component // by setting the loader source to Null and then recreate it 100ms later styleWidgetLoader.sourceComponent = undefined; @@ -91,8 +98,6 @@ Item { postpone.start() } } - - } } @@ -101,9 +106,52 @@ Item { id: styleWidgetLoader sourceComponent: styleWidget anchors.left: parent.left - anchors.right: parent.right - } - } + anchors.right: parent.right + height: 240 + } + + Separator {} + + Rectangle { + id: selectionView + anchors.left: parent.left + anchors.right: parent.right + height: 250 + color: hifi.colors.lightGray + + function resetSelectionView() { + // myModel.resetSelectionView(); + var entities = Selection.getSelectedItemsList(root.listName)["entities"] + //print("resetSelectionView" + JSON.stringify(entities)) + myModel.clear() + var fLen = entities.length; + for (var i = 0; i < fLen; i++) { + myModel.append({ "objectID": JSON.stringify(entities[i]) }) + // print("resetSelectionView" + JSON.stringify( entities[i])) + } + } + + ListModel { + id: myModel + } + + Component { + id: myDelegate + Row { + id: fruit + Text { text: JSON.stringify(objectID) } + } + } + + ListView { + id: selectionListView + anchors.fill: parent + anchors.topMargin: 30 + model: myModel + delegate: myDelegate + } + } + } Component { id: styleWidget @@ -116,7 +164,7 @@ Item { onNewStyle: { var style = getStyle() - // print("new style " + JSON.stringify(style) ) + // print("new style " + JSON.stringify(style) ) Selection.enableListHighlight(root.listName, style) } } From 65f22f498ac8be2b04bb29300f18c320835f7842 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 7 Dec 2017 16:09:06 -0800 Subject: [PATCH 297/329] remove previous version of debug highlight --- .../utilities/render/debugHighlight.js | 265 ------------------ .../developer/utilities/render/highlight.qml | 177 ------------ 2 files changed, 442 deletions(-) delete mode 100644 scripts/developer/utilities/render/debugHighlight.js delete mode 100644 scripts/developer/utilities/render/highlight.qml diff --git a/scripts/developer/utilities/render/debugHighlight.js b/scripts/developer/utilities/render/debugHighlight.js deleted file mode 100644 index c647c601b9..0000000000 --- a/scripts/developer/utilities/render/debugHighlight.js +++ /dev/null @@ -1,265 +0,0 @@ -// -// debugHighlight.js -// developer/utilities/render -// -// Olivier Prat, created on 08/08/2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -"use strict"; - -// -// Luci.js -// tablet-engine app -// -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -(function() { - var TABLET_BUTTON_NAME = "Highlight"; - var QMLAPP_URL = Script.resolvePath("./highlight.qml"); - var ICON_URL = Script.resolvePath("../../../system/assets/images/luci-i.svg"); - var ACTIVE_ICON_URL = Script.resolvePath("../../../system/assets/images/luci-a.svg"); - - - var onLuciScreen = false; - - function onClicked() { - if (onLuciScreen) { - tablet.gotoHomeScreen(); - } else { - tablet.loadQMLSource(QMLAPP_URL); - } - } - - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - var button = tablet.addButton({ - text: TABLET_BUTTON_NAME, - icon: ICON_URL, - activeIcon: ACTIVE_ICON_URL, - sortOrder: 1 - }); - - var hasEventBridge = false; - - function wireEventBridge(on) { - if (!tablet) { - print("Warning in wireEventBridge(): 'tablet' undefined!"); - return; - } - if (on) { - if (!hasEventBridge) { - tablet.fromQml.connect(fromQml); - hasEventBridge = true; - } - } else { - if (hasEventBridge) { - tablet.fromQml.disconnect(fromQml); - hasEventBridge = false; - } - } - } - - function onScreenChanged(type, url) { - if (url === QMLAPP_URL) { - onLuciScreen = true; - } else { - onLuciScreen = false; - } - - button.editProperties({isActive: onLuciScreen}); - wireEventBridge(onLuciScreen); - } - - function fromQml(message) { - } - - button.clicked.connect(onClicked); - tablet.screenChanged.connect(onScreenChanged); - - var moveDebugCursor = false; - Controller.mousePressEvent.connect(function (e) { - if (e.isMiddleButton) { - moveDebugCursor = true; - setDebugCursor(e.x, e.y); - } - }); - Controller.mouseReleaseEvent.connect(function() { moveDebugCursor = false; }); - Controller.mouseMoveEvent.connect(function (e) { if (moveDebugCursor) setDebugCursor(e.x, e.y); }); - - - Script.scriptEnding.connect(function () { - if (onLuciScreen) { - tablet.gotoHomeScreen(); - } - button.clicked.disconnect(onClicked); - tablet.screenChanged.disconnect(onScreenChanged); - tablet.removeButton(button); - }); - - function setDebugCursor(x, y) { - nx = (x / Window.innerWidth); - ny = 1.0 - ((y) / (Window.innerHeight - 32)); - - Render.getConfig("RenderMainView").getConfig("Antialiasing").debugCursorTexcoord = { x: nx, y: ny }; - } - -}()); - - - -// Set up the qml ui -var qml = Script.resolvePath('highlight.qml'); -var window = new OverlayWindow({ - title: 'Highlight', - source: qml, - width: 400, - height: 400, -}); -window.closed.connect(function() { Script.stop(); }); - -"use strict"; - -// Created by Sam Gondelman on 9/7/2017 -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html - -(function() { // BEGIN LOCAL_SCOPE - -var END_DIMENSIONS = { - x: 0.15, - y: 0.15, - z: 0.15 -}; -var COLOR = {red: 97, green: 247, blue: 255}; -var end = { - type: "sphere", - dimensions: END_DIMENSIONS, - color: COLOR, - ignoreRayIntersection: true, - alpha: 1.0, - visible: true -} - -var COLOR2 = {red: 247, green: 97, blue: 255}; -var end2 = { - type: "sphere", - dimensions: END_DIMENSIONS, - color: COLOR2, - ignoreRayIntersection: true, - alpha: 1.0, - visible: true -} - -var highlightGroupIndex = 0 -var isSelectionAddEnabled = false -var isSelectionEnabled = false -var renderStates = [{name: "test", end: end}]; -var defaultRenderStates = [{name: "test", distance: 20.0, end: end2}]; -var time = 0 - -var ray = LaserPointers.createLaserPointer({ - joint: "Mouse", - filter: RayPick.PICK_ENTITIES | RayPick.PICK_OVERLAYS | RayPick.PICK_AVATARS | RayPick.PICK_INVISIBLE | RayPick.PICK_NONCOLLIDABLE, - renderStates: renderStates, - defaultRenderStates: defaultRenderStates, - enabled: false -}); - -function getSelectionName() { - var selectionName = "contextOverlayHighlightList" - - if (highlightGroupIndex>0) { - selectionName += highlightGroupIndex - } - return selectionName -} - -function fromQml(message) { - tokens = message.split(' ') - print("Received '"+message+"' from hightlight.qml") - if (tokens[0]=="highlight") { - highlightGroupIndex = parseInt(tokens[1]) - print("Switching to highlight group "+highlightGroupIndex) - } else if (tokens[0]=="pick") { - isSelectionEnabled = tokens[1]=='true' - print("Ray picking set to "+isSelectionEnabled.toString()) - if (isSelectionEnabled) { - LaserPointers.enableLaserPointer(ray) - } else { - LaserPointers.disableLaserPointer(ray) - } - time = 0 - } else if (tokens[0]=="add") { - isSelectionAddEnabled = tokens[1]=='true' - print("Add to selection set to "+isSelectionAddEnabled.toString()) - if (!isSelectionAddEnabled) { - Selection.clearSelectedItemsList(getSelectionName()) - } - } -} - -window.fromQml.connect(fromQml); - -function cleanup() { - LaserPointers.removeLaserPointer(ray); -} -Script.scriptEnding.connect(cleanup); - -var prevID = 0 -var prevType = "" -var selectedID = 0 -var selectedType = "" -function update(deltaTime) { - - // you have to do this repeatedly because there's a bug but I'll fix it - LaserPointers.setRenderState(ray, "test"); - - var result = LaserPointers.getPrevRayPickResult(ray); - var selectionName = getSelectionName() - - if (isSelectionEnabled && result.type != RayPick.INTERSECTED_NONE) { - time += deltaTime - if (result.objectID != prevID) { - var typeName = "" - if (result.type == RayPick.INTERSECTED_ENTITY) { - typeName = "entity" - } else if (result.type == RayPick.INTERSECTED_OVERLAY) { - typeName = "overlay" - } else if (result.type == RayPick.INTERSECTED_AVATAR) { - typeName = "avatar" - } - - prevID = result.objectID; - prevType = typeName; - time = 0 - } else if (time>1.0 && prevID!=selectedID) { - if (prevID != 0 && !isSelectionAddEnabled) { - Selection.removeFromSelectedItemsList(selectionName, selectedType, selectedID) - } - selectedID = prevID - selectedType = prevType - Selection.addToSelectedItemsList(selectionName, selectedType, selectedID) - print("HIGHLIGHT " + highlightGroupIndex + " picked type: " + result.type + ", id: " + result.objectID); - } - } else { - if (prevID != 0 && !isSelectionAddEnabled) { - Selection.removeFromSelectedItemsList(selectionName, prevType, prevID) - } - prevID = 0 - selectedID = 0 - time = 0 - } -} - -Script.update.connect(update); - -}()); // END LOCAL_SCOPE \ No newline at end of file diff --git a/scripts/developer/utilities/render/highlight.qml b/scripts/developer/utilities/render/highlight.qml deleted file mode 100644 index 6be74fcf40..0000000000 --- a/scripts/developer/utilities/render/highlight.qml +++ /dev/null @@ -1,177 +0,0 @@ -// -// highlight.qml -// developer/utilities/render -// -// Olivier Prat, created on 08/08/2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html -// -import QtQuick 2.7 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.3 - -import "qrc:///qml/styles-uit" -import "qrc:///qml/controls-uit" as HifiControls -import "configSlider" - -Rectangle { - id: root - HifiConstants { id: hifi;} - color: hifi.colors.baseGray; - anchors.margins: hifi.dimensions.contentMargin.x - - property var debugConfig: Render.getConfig("RenderMainView.HighlightDebug") - property var highlightConfig: Render.getConfig("UpdateScene.HighlightStageSetup") - - signal sendToScript(var message); - - Column { - id: col - spacing: 10 - anchors.left: parent.left - anchors.right: parent.right - anchors.margins: hifi.dimensions.contentMargin.x - - Row { - spacing: 10 - anchors.left: parent.left - anchors.right: parent.right - - HifiControls.CheckBox { - id: debug - text: "View Mask" - checked: root.debugConfig["viewMask"] - onCheckedChanged: { - root.debugConfig["viewMask"] = checked; - } - } - HifiControls.CheckBox { - text: "Hover select" - checked: false - onCheckedChanged: { - sendToScript("pick "+checked.toString()) - } - } - HifiControls.CheckBox { - text: "Add to selection" - checked: false - onCheckedChanged: { - sendToScript("add "+checked.toString()) - } - } - } - - HifiControls.ComboBox { - id: box - width: 350 - z: 999 - editable: true - colorScheme: hifi.colorSchemes.dark - model: [ - "contextOverlayHighlightList", - "highlightList1", - "highlightList2", - "highlightList3", - "highlightList4"] - label: "" - - Timer { - id: postpone - interval: 100; running: false; repeat: false - onTriggered: { paramWidgetLoader.sourceComponent = paramWidgets } - } - onCurrentIndexChanged: { - root.highlightConfig["selectionName"] = model[currentIndex]; - sendToScript("highlight "+currentIndex) - // This is a hack to be sure the widgets below properly reflect the change of category: delete the Component - // by setting the loader source to Null and then recreate it 100ms later - paramWidgetLoader.sourceComponent = undefined; - postpone.interval = 100 - postpone.start() - } - } - - Loader { - id: paramWidgetLoader - sourceComponent: paramWidgets - width: 350 - } - - Component { - id: paramWidgets - - Column { - spacing: 10 - anchors.margins: hifi.dimensions.contentMargin.x - - HifiControls.Label { - text: "Outline" - } - Column { - spacing: 10 - anchors.left: parent.left - anchors.right: parent.right - HifiControls.CheckBox { - text: "Smooth" - checked: root.highlightConfig["isOutlineSmooth"] - onCheckedChanged: { - root.highlightConfig["isOutlineSmooth"] = checked; - } - } - Repeater { - model: ["Width:outlineWidth:5.0:0.0", - "Intensity:outlineIntensity:1.0:0.0" - ] - ConfigSlider { - label: qsTr(modelData.split(":")[0]) - integral: false - config: root.highlightConfig - property: modelData.split(":")[1] - max: modelData.split(":")[2] - min: modelData.split(":")[3] - } - } - } - - Separator {} - HifiControls.Label { - text: "Color" - } - Repeater { - model: ["Red:colorR:1.0:0.0", - "Green:colorG:1.0:0.0", - "Blue:colorB:1.0:0.0" - ] - ConfigSlider { - label: qsTr(modelData.split(":")[0]) - integral: false - config: root.highlightConfig - property: modelData.split(":")[1] - max: modelData.split(":")[2] - min: modelData.split(":")[3] - } - } - - Separator {} - HifiControls.Label { - text: "Fill Opacity" - } - Repeater { - model: ["Unoccluded:unoccludedFillOpacity:1.0:0.0", - "Occluded:occludedFillOpacity:1.0:0.0" - ] - ConfigSlider { - label: qsTr(modelData.split(":")[0]) - integral: false - config: root.highlightConfig - property: modelData.split(":")[1] - max: modelData.split(":")[2] - min: modelData.split(":")[3] - } - } - } - } - } -} From 298b9be0c2295f11ca29837be2ea0a94f6c3064e Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 7 Dec 2017 16:13:32 -0800 Subject: [PATCH 298/329] Reinstall highlight debug tool --- .../utilities/render/{debugHighlight2.js => debugHighlight.js} | 0 .../developer/utilities/render/{highlight2.qml => highlight.qml} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename scripts/developer/utilities/render/{debugHighlight2.js => debugHighlight.js} (100%) rename scripts/developer/utilities/render/{highlight2.qml => highlight.qml} (100%) diff --git a/scripts/developer/utilities/render/debugHighlight2.js b/scripts/developer/utilities/render/debugHighlight.js similarity index 100% rename from scripts/developer/utilities/render/debugHighlight2.js rename to scripts/developer/utilities/render/debugHighlight.js diff --git a/scripts/developer/utilities/render/highlight2.qml b/scripts/developer/utilities/render/highlight.qml similarity index 100% rename from scripts/developer/utilities/render/highlight2.qml rename to scripts/developer/utilities/render/highlight.qml From 542af47e9edd7e5416643de01893a4d75138b1a6 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Wed, 29 Nov 2017 17:20:54 -0800 Subject: [PATCH 299/329] Fix for hand controller avatar scaling. * Added getDomainMaxScale() and getDomainMinScale() to JS api. * Updated scaleAvatar controller module to use this to prevent scaling past the limits. * Made sure that getDomainMaxScale() getDomainMinScale() and getUnscaledEyeHeight are thread safe, so that they can be invoked on the script thread. * Added signals to Model class that can be used to let observers know when the Rig has finished initializing it's skeleton. and also when the skeleton is no longer valid. These hooks are used to cache the unscaled eye height of the avatar. --- interface/src/avatar/MyAvatar.cpp | 3 +- .../src/avatars-renderer/Avatar.cpp | 30 +++++++++++++------ .../src/avatars-renderer/Avatar.h | 13 ++++++-- .../src/avatars-renderer/OtherAvatar.cpp | 2 ++ libraries/avatars/src/AvatarData.h | 18 +++++++++-- libraries/render-utils/src/Model.cpp | 2 ++ libraries/render-utils/src/Model.h | 2 ++ .../controllerModules/scaleAvatar.js | 6 +++- 8 files changed, 61 insertions(+), 15 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 1623fa3213..c874205611 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -114,7 +114,8 @@ MyAvatar::MyAvatar(QThread* thread) : _skeletonModel = std::make_shared(this, nullptr); connect(_skeletonModel.get(), &Model::setURLFinished, this, &Avatar::setModelURLFinished); - + connect(_skeletonModel.get(), &Model::rigReady, this, &Avatar::rigReady); + connect(_skeletonModel.get(), &Model::rigReset, this, &Avatar::rigReset); using namespace recording; _skeletonModel->flagAsCauterized(); diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 437ac623e3..bb7f141cd9 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -1217,6 +1217,15 @@ void Avatar::setModelURLFinished(bool success) { } } +// rig is ready +void Avatar::rigReady() { + buildUnscaledEyeHeightCache(); +} + +// rig has been reset. +void Avatar::rigReset() { + clearUnscaledEyeHeightCache(); +} // create new model, can return an instance of a SoftAttachmentModel rather then Model static std::shared_ptr allocateAttachmentModel(bool isSoft, const Rig& rigOverride, bool isCauterized) { @@ -1584,18 +1593,17 @@ void Avatar::ensureInScene(AvatarSharedPointer self, const render::ScenePointer& } } +// thread-safe float Avatar::getEyeHeight() const { - - if (QThread::currentThread() != thread()) { - float result = DEFAULT_AVATAR_EYE_HEIGHT; - BLOCKING_INVOKE_METHOD(const_cast(this), "getEyeHeight", Q_RETURN_ARG(float, result)); - return result; - } - return getModelScale() * getUnscaledEyeHeight(); } +// thread-safe float Avatar::getUnscaledEyeHeight() const { + return _unscaledEyeHeightCache.get(); +} + +void Avatar::buildUnscaledEyeHeightCache() { float skeletonHeight = getUnscaledEyeHeightFromSkeleton(); // Sanity check by looking at the model extents. @@ -1606,12 +1614,16 @@ float Avatar::getUnscaledEyeHeight() const { // This helps prevent absurdly large avatars from exceeding the domain height limit. const float MESH_SLOP_RATIO = 1.5f; if (meshHeight > skeletonHeight * MESH_SLOP_RATIO) { - return meshHeight; + _unscaledEyeHeightCache.set(meshHeight); } else { - return skeletonHeight; + _unscaledEyeHeightCache.set(skeletonHeight); } } +void Avatar::clearUnscaledEyeHeightCache() { + _unscaledEyeHeightCache.set(DEFAULT_AVATAR_EYE_HEIGHT); +} + float Avatar::getUnscaledEyeHeightFromSkeleton() const { // TODO: if performance becomes a concern we can cache this value rather then computing it everytime. diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 44d4ef4c51..c75b54fdc4 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -257,8 +257,8 @@ public: Q_INVOKABLE virtual float getEyeHeight() const override; - // returns eye height of avatar in meters, ignoreing avatar scale. - // if _targetScale is 1 then this will be identical to getEyeHeight; + // returns eye height of avatar in meters, ignoring avatar scale. + // if _targetScale is 1 then this will be identical to getEyeHeight. virtual float getUnscaledEyeHeight() const override; // returns true, if an acurate eye height estimage can be obtained by inspecting the avatar model skeleton and geometry, @@ -280,10 +280,17 @@ public slots: glm::vec3 getRightPalmPosition() const; glm::quat getRightPalmRotation() const; + // hooked up to Model::setURLFinished signal void setModelURLFinished(bool success); + // hooked up to Model::rigReady & rigReset signals + void rigReady(); + void rigReset(); + protected: float getUnscaledEyeHeightFromSkeleton() const; + void buildUnscaledEyeHeightCache(); + void clearUnscaledEyeHeightCache(); virtual const QString& getSessionDisplayNameForTransport() const override { return _empty; } // Save a tiny bit of bandwidth. Mixer won't look at what we send. QString _empty{}; virtual void maybeUpdateSessionDisplayNameFromTransport(const QString& sessionDisplayName) override { _sessionDisplayName = sessionDisplayName; } // don't use no-op setter! @@ -384,6 +391,8 @@ protected: float _displayNameTargetAlpha { 1.0f }; float _displayNameAlpha { 1.0f }; + + ThreadSafeValueCache _unscaledEyeHeightCache { DEFAULT_AVATAR_EYE_HEIGHT }; }; #endif // hifi_Avatar_h diff --git a/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp index e870e2de12..4382216575 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp @@ -13,4 +13,6 @@ OtherAvatar::OtherAvatar(QThread* thread) : Avatar(thread) { _headData = new Head(this); _skeletonModel = std::make_shared(this, nullptr); connect(_skeletonModel.get(), &Model::setURLFinished, this, &Avatar::setModelURLFinished); + connect(_skeletonModel.get(), &Model::rigReady, this, &Avatar::rigReady); + connect(_skeletonModel.get(), &Model::rigReset, this, &Avatar::rigReset); } diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index de98675733..d7dd2837cb 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -483,8 +483,22 @@ public: virtual void setTargetScale(float targetScale); float getDomainLimitedScale() const; - float getDomainMinScale() const; - float getDomainMaxScale() const; + + /**jsdoc + * returns the minimum scale allowed for this avatar in the current domain. + * This value can change as the user changes avatars or when changing domains. + * @function AvatarData.getDomainMinScale + * @returns {number} minimum scale allowed for this avatar in the current domain. + */ + Q_INVOKABLE float getDomainMinScale() const; + + /**jsdoc + * returns the maximum scale allowed for this avatar in the current domain. + * This value can change as the user changes avatars or when changing domains. + * @function AvatarData.getDomainMaxScale + * @returns {number} maximum scale allowed for this avatar in the current domain. + */ + Q_INVOKABLE float getDomainMaxScale() const; // returns eye height of avatar in meters, ignoreing avatar scale. // if _targetScale is 1 then this will be identical to getEyeHeight; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 199cb29f53..c4bc435691 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -286,6 +286,7 @@ void Model::reset() { if (isLoaded()) { const FBXGeometry& geometry = getFBXGeometry(); _rig.reset(geometry); + emit rigReset(); } } @@ -322,6 +323,7 @@ bool Model::updateGeometry() { _blendedVertexBuffers.push_back(buffer); } needFullUpdate = true; + emit rigReady(); } return needFullUpdate; } diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index fadd44b745..7568a17342 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -273,6 +273,8 @@ signals: void setURLFinished(bool success); void setCollisionModelURLFinished(bool success); void requestRenderUpdate(); + void rigReady(); + void rigReset(); protected: diff --git a/scripts/system/controllers/controllerModules/scaleAvatar.js b/scripts/system/controllers/controllerModules/scaleAvatar.js index e4ae3654e1..1868b0228a 100644 --- a/scripts/system/controllers/controllerModules/scaleAvatar.js +++ b/scripts/system/controllers/controllerModules/scaleAvatar.js @@ -12,6 +12,10 @@ (function () { var dispatcherUtils = Script.require("/~/system/libraries/controllerDispatcherUtils.js"); + function clamp(val, min, max) { + return Math.max(min, Math.min(max, val)); + } + function ScaleAvatar(hand) { this.hand = hand; this.scalingStartAvatarScale = 0; @@ -61,7 +65,7 @@ controllerData.controllerLocations[this.otherHand()].position)); var newAvatarScale = (scalingCurrentDistance / this.scalingStartDistance) * this.scalingStartAvatarScale; - MyAvatar.scale = newAvatarScale; + MyAvatar.scale = clamp(newAvatarScale, MyAvatar.getDomainMinScale(), MyAvatar.getDomainMaxScale()); MyAvatar.scaleChanged(); } return dispatcherUtils.makeRunningValues(true, [], []); From 42b509639b136c5b2c09fab5657997fe6ffe26ca Mon Sep 17 00:00:00 2001 From: David Kelly Date: Thu, 7 Dec 2017 17:22:00 -0800 Subject: [PATCH 300/329] Fix certificate hash --- libraries/entities/src/EntityItemProperties.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 5ab4bdee01..9f7ba1cc80 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -2486,7 +2486,7 @@ QByteArray EntityItemProperties::getStaticCertificateJSON() const { ADD_STRING_PROPERTY(collisionSoundURL, CollisionSoundURL); ADD_STRING_PROPERTY(compoundShapeURL, CompoundShapeURL); ADD_INT_PROPERTY(editionNumber, EditionNumber); - ADD_INT_PROPERTY(instanceNumber, EntityInstanceNumber); + ADD_INT_PROPERTY(entityInstanceNumber, EntityInstanceNumber); ADD_STRING_PROPERTY(itemArtist, ItemArtist); ADD_STRING_PROPERTY(itemCategories, ItemCategories); ADD_STRING_PROPERTY(itemDescription, ItemDescription); From ace8e153c220e18148e806c786e9ad8c8c1cb348 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 7 Dec 2017 17:45:40 -0800 Subject: [PATCH 301/329] making sure the ID of an object in the Selection list is unique and more refined debugging --- .../scripting/SelectionScriptingInterface.cpp | 12 +- .../scripting/SelectionScriptingInterface.h | 3 +- .../utilities/render/debugHighlight.js | 152 +----------------- .../developer/utilities/render/highlight.qml | 2 +- 4 files changed, 13 insertions(+), 156 deletions(-) diff --git a/interface/src/scripting/SelectionScriptingInterface.cpp b/interface/src/scripting/SelectionScriptingInterface.cpp index 4e28fb4702..6f2696f2f5 100644 --- a/interface/src/scripting/SelectionScriptingInterface.cpp +++ b/interface/src/scripting/SelectionScriptingInterface.cpp @@ -18,7 +18,9 @@ GameplayObjects::GameplayObjects() { bool GameplayObjects::addToGameplayObjects(const QUuid& avatarID) { containsData = true; - _avatarIDs.push_back(avatarID); + if (std::find(_avatarIDs.begin(), _avatarIDs.end(), avatarID) == _avatarIDs.end()) { + _avatarIDs.push_back(avatarID); + } return true; } bool GameplayObjects::removeFromGameplayObjects(const QUuid& avatarID) { @@ -28,7 +30,9 @@ bool GameplayObjects::removeFromGameplayObjects(const QUuid& avatarID) { bool GameplayObjects::addToGameplayObjects(const EntityItemID& entityID) { containsData = true; - _entityIDs.push_back(entityID); + if (std::find(_entityIDs.begin(), _entityIDs.end(), entityID) == _entityIDs.end()) { + _entityIDs.push_back(entityID); + } return true; } bool GameplayObjects::removeFromGameplayObjects(const EntityItemID& entityID) { @@ -38,7 +42,9 @@ bool GameplayObjects::removeFromGameplayObjects(const EntityItemID& entityID) { bool GameplayObjects::addToGameplayObjects(const OverlayID& overlayID) { containsData = true; - _overlayIDs.push_back(overlayID); + if (std::find(_overlayIDs.begin(), _overlayIDs.end(), overlayID) == _overlayIDs.end()) { + _overlayIDs.push_back(overlayID); + } return true; } bool GameplayObjects::removeFromGameplayObjects(const OverlayID& overlayID) { diff --git a/interface/src/scripting/SelectionScriptingInterface.h b/interface/src/scripting/SelectionScriptingInterface.h index 75bddbe62d..5c2bf2789f 100644 --- a/interface/src/scripting/SelectionScriptingInterface.h +++ b/interface/src/scripting/SelectionScriptingInterface.h @@ -140,10 +140,11 @@ public: * Query the list of avatars, entities and overlays stored in a particular selection. * @function Selection.getList * @param listName {string} name of the selection - * @return a js object containing the following properties (if the array of obkjects are not empty): + * @return a js object describing the content of a selection list with the following properties: * - "entities": [ and array of the entityID of the entities in the selection] * - "avatars": [ and array of the avatarID of the avatars in the selection] * - "overlays": [ and array of the overlayID of the overlays in the selection] + * If the list name doesn't exist, the function returns an empty js object with no properties. */ Q_INVOKABLE QVariantMap getSelectedItemsList(const QString& listName) const; diff --git a/scripts/developer/utilities/render/debugHighlight.js b/scripts/developer/utilities/render/debugHighlight.js index 387d5bfe4a..b1a91abdd7 100644 --- a/scripts/developer/utilities/render/debugHighlight.js +++ b/scripts/developer/utilities/render/debugHighlight.js @@ -11,19 +11,9 @@ "use strict"; -// -// Luci.js -// tablet-engine app -// -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - (function() { var TABLET_BUTTON_NAME = "Highlight"; - var QMLAPP_URL = Script.resolvePath("./highlight2.qml"); + var QMLAPP_URL = Script.resolvePath("./highlight.qml"); var ICON_URL = Script.resolvePath("../../../system/assets/images/luci-i.svg"); var ACTIVE_ICON_URL = Script.resolvePath("../../../system/assets/images/luci-a.svg"); @@ -109,143 +99,3 @@ }()); - -// Set up the qml ui - -// Created by Sam Gondelman on 9/7/2017 -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -/* -(function() { // BEGIN LOCAL_SCOPE - -var END_DIMENSIONS = { - x: 0.15, - y: 0.15, - z: 0.15 -}; -var COLOR = {red: 97, green: 247, blue: 255}; -var end = { - type: "sphere", - dimensions: END_DIMENSIONS, - color: COLOR, - ignoreRayIntersection: true, - alpha: 1.0, - visible: true -} - -var COLOR2 = {red: 247, green: 97, blue: 255}; -var end2 = { - type: "sphere", - dimensions: END_DIMENSIONS, - color: COLOR2, - ignoreRayIntersection: true, - alpha: 1.0, - visible: true -} - -var highlightGroupIndex = 0 -var isSelectionAddEnabled = false -var isSelectionEnabled = false -var renderStates = [{name: "test", end: end}]; -var defaultRenderStates = [{name: "test", distance: 20.0, end: end2}]; -var time = 0 - -var ray = LaserPointers.createLaserPointer({ - joint: "Mouse", - filter: RayPick.PICK_ENTITIES | RayPick.PICK_OVERLAYS | RayPick.PICK_AVATARS | RayPick.PICK_INVISIBLE | RayPick.PICK_NONCOLLIDABLE, - renderStates: renderStates, - defaultRenderStates: defaultRenderStates, - enabled: false -}); - -function getSelectionName() { - var selectionName = "contextOverlayHighlightList" - - if (highlightGroupIndex>0) { - selectionName += highlightGroupIndex - } - return selectionName -} - -function fromQml(message) { - tokens = message.split(' ') - print("Received '"+message+"' from hightlight.qml") - if (tokens[0]=="highlight") { - highlightGroupIndex = parseInt(tokens[1]) - print("Switching to highlight group "+highlightGroupIndex) - } else if (tokens[0]=="pick") { - isSelectionEnabled = tokens[1]=='true' - print("Ray picking set to "+isSelectionEnabled.toString()) - if (isSelectionEnabled) { - LaserPointers.enableLaserPointer(ray) - } else { - LaserPointers.disableLaserPointer(ray) - } - time = 0 - } else if (tokens[0]=="add") { - isSelectionAddEnabled = tokens[1]=='true' - print("Add to selection set to "+isSelectionAddEnabled.toString()) - if (!isSelectionAddEnabled) { - Selection.clearSelectedItemsList(getSelectionName()) - } - } -} - -window.fromQml.connect(fromQml); - -function cleanup() { - LaserPointers.removeLaserPointer(ray); -} -Script.scriptEnding.connect(cleanup); - -var prevID = 0 -var prevType = "" -var selectedID = 0 -var selectedType = "" -function update(deltaTime) { - - // you have to do this repeatedly because there's a bug but I'll fix it - LaserPointers.setRenderState(ray, "test"); - - var result = LaserPointers.getPrevRayPickResult(ray); - var selectionName = getSelectionName() - - if (isSelectionEnabled && result.type != RayPick.INTERSECTED_NONE) { - time += deltaTime - if (result.objectID != prevID) { - var typeName = "" - if (result.type == RayPick.INTERSECTED_ENTITY) { - typeName = "entity" - } else if (result.type == RayPick.INTERSECTED_OVERLAY) { - typeName = "overlay" - } else if (result.type == RayPick.INTERSECTED_AVATAR) { - typeName = "avatar" - } - - prevID = result.objectID; - prevType = typeName; - time = 0 - } else if (time>1.0 && prevID!=selectedID) { - if (prevID != 0 && !isSelectionAddEnabled) { - Selection.removeFromSelectedItemsList(selectionName, selectedType, selectedID) - } - selectedID = prevID - selectedType = prevType - Selection.addToSelectedItemsList(selectionName, selectedType, selectedID) - print("HIGHLIGHT " + highlightGroupIndex + " picked type: " + result.type + ", id: " + result.objectID); - } - } else { - if (prevID != 0 && !isSelectionAddEnabled) { - Selection.removeFromSelectedItemsList(selectionName, prevType, prevID) - } - prevID = 0 - selectedID = 0 - time = 0 - } -} - -Script.update.connect(update); - -}()); // END LOCAL_SCOPE*/ \ No newline at end of file diff --git a/scripts/developer/utilities/render/highlight.qml b/scripts/developer/utilities/render/highlight.qml index af478723fa..fed42a76c6 100644 --- a/scripts/developer/utilities/render/highlight.qml +++ b/scripts/developer/utilities/render/highlight.qml @@ -62,7 +62,6 @@ Item { print(root.styleList) styleSelectorLoader.sourceComponent = undefined; styleSelectorLoader.sourceComponent = selectorWidget; - resetSelectionView(); } } @@ -87,6 +86,7 @@ Item { interval: 100; running: false; repeat: false onTriggered: { styleWidgetLoader.sourceComponent = styleWidget + resetSelectionView(); } } onCurrentIndexChanged: { From 7a9d77fed49f4e7d90ff4e16833a70b54d0719a2 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 7 Dec 2017 17:53:30 -0800 Subject: [PATCH 302/329] return a legit selectedItemsList js object as long as the list exist, only void if the list name is unknown --- .../scripting/SelectionScriptingInterface.cpp | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/interface/src/scripting/SelectionScriptingInterface.cpp b/interface/src/scripting/SelectionScriptingInterface.cpp index 6f2696f2f5..b7613cc3ae 100644 --- a/interface/src/scripting/SelectionScriptingInterface.cpp +++ b/interface/src/scripting/SelectionScriptingInterface.cpp @@ -247,35 +247,32 @@ QVariantMap SelectionScriptingInterface::getSelectedItemsList(const QString& lis QVariantMap list; auto currentList = _selectedItemsListMap.find(listName); if (currentList != _selectedItemsListMap.end()) { - if ((*currentList).getContainsData()) { + QList avatarIDs; + QList entityIDs; + QList overlayIDs; + if ((*currentList).getContainsData()) { if (!(*currentList).getAvatarIDs().empty()) { - QList avatarIDs; for (auto j : (*currentList).getAvatarIDs()) { avatarIDs.push_back((QUuid)j); } - list["avatars"] = (avatarIDs); } if (!(*currentList).getEntityIDs().empty()) { - QList entityIDs; for (auto j : (*currentList).getEntityIDs()) { entityIDs.push_back((QUuid)j ); } - list["entities"] = (entityIDs); } if (!(*currentList).getOverlayIDs().empty()) { - QList overlayIDs; for (auto j : (*currentList).getOverlayIDs()) { overlayIDs.push_back((QUuid)j); } - list["overlays"] = (overlayIDs); } + } + list["avatars"] = (avatarIDs); + list["entities"] = (entityIDs); + list["overlays"] = (overlayIDs); - return list; - } - else { - return list; - } + return list; } else { return list; From 4c1dea2b30f56a5454d2ffe95d1353923bb82398 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 7 Dec 2017 17:54:14 -0800 Subject: [PATCH 303/329] Remove uneeded files --- .../render/highlightPage/HighlightPage.qml | 116 ------------------ .../utilities/render/highlightPage/qmldir | 1 - 2 files changed, 117 deletions(-) delete mode 100644 scripts/developer/utilities/render/highlightPage/HighlightPage.qml delete mode 100644 scripts/developer/utilities/render/highlightPage/qmldir diff --git a/scripts/developer/utilities/render/highlightPage/HighlightPage.qml b/scripts/developer/utilities/render/highlightPage/HighlightPage.qml deleted file mode 100644 index 5669f90628..0000000000 --- a/scripts/developer/utilities/render/highlightPage/HighlightPage.qml +++ /dev/null @@ -1,116 +0,0 @@ -// -// highlightPage.qml -// developer/utilities/render -// -// Olivier Prat, created on 08/08/2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html -// -import QtQuick 2.7 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.3 -import "../configSlider" -import "qrc:///qml/styles-uit" -import "qrc:///qml/controls-uit" as HifiControls - -Rectangle { - id: root - property var highlightIndex: 0 - property var drawConfig: Render.getConfig("RenderMainView.HighlightEffect"+highlightIndex) - - HifiConstants { id: hifi;} - anchors.margins: hifi.dimensions.contentMargin.x - - Column { - spacing: 5 - anchors.left: parent.left - anchors.right: parent.right - anchors.margins: hifi.dimensions.contentMargin.x - - HifiControls.CheckBox { - id: glow - text: "Glow" - checked: root.drawConfig["glow"] - onCheckedChanged: { - root.drawConfig["glow"] = checked; - } - } - Repeater { - model: ["Width:width:5.0:0.0", - "Intensity:intensity:1.0:0.0" - ] - ConfigSlider { - label: qsTr(modelData.split(":")[0]) - integral: false - config: root.drawConfig - property: modelData.split(":")[1] - max: modelData.split(":")[2] - min: modelData.split(":")[3] - - anchors.left: parent.left - anchors.right: parent.right - } - } - - GroupBox { - title: "Color" - anchors.left: parent.left - anchors.right: parent.right - Column { - spacing: 10 - anchors.left: parent.left - anchors.right: parent.right - anchors.margins: hifi.dimensions.contentMargin.x - - Repeater { - model: ["Red:colorR:1.0:0.0", - "Green:colorG:1.0:0.0", - "Blue:colorB:1.0:0.0" - ] - ConfigSlider { - label: qsTr(modelData.split(":")[0]) - integral: false - config: root.drawConfig - property: modelData.split(":")[1] - max: modelData.split(":")[2] - min: modelData.split(":")[3] - - anchors.left: parent.left - anchors.right: parent.right - } - } - } - } - - GroupBox { - title: "Fill Opacity" - anchors.left: parent.left - anchors.right: parent.right - Column { - spacing: 10 - anchors.left: parent.left - anchors.right: parent.right - anchors.margins: hifi.dimensions.contentMargin.x - - Repeater { - model: ["Unoccluded:unoccludedFillOpacity:1.0:0.0", - "Occluded:occludedFillOpacity:1.0:0.0" - ] - ConfigSlider { - label: qsTr(modelData.split(":")[0]) - integral: false - config: root.drawConfig - property: modelData.split(":")[1] - max: modelData.split(":")[2] - min: modelData.split(":")[3] - - anchors.left: parent.left - anchors.right: parent.right - } - } - } - } - } -} diff --git a/scripts/developer/utilities/render/highlightPage/qmldir b/scripts/developer/utilities/render/highlightPage/qmldir deleted file mode 100644 index bb3de24b84..0000000000 --- a/scripts/developer/utilities/render/highlightPage/qmldir +++ /dev/null @@ -1 +0,0 @@ -HighlightPage 1.0 HighlightPage.qml \ No newline at end of file From 013d2e808d8025bfac8df4e27fd714b64f29747c Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 8 Dec 2017 03:53:56 -0800 Subject: [PATCH 304/329] Adding the hovering from the mouse from the debugHighlight.js --- .../utilities/render/debugHighlight.js | 103 +++++++++++++++--- .../developer/utilities/render/highlight.qml | 28 +++-- 2 files changed, 107 insertions(+), 24 deletions(-) diff --git a/scripts/developer/utilities/render/debugHighlight.js b/scripts/developer/utilities/render/debugHighlight.js index b1a91abdd7..22fa54b9d2 100644 --- a/scripts/developer/utilities/render/debugHighlight.js +++ b/scripts/developer/utilities/render/debugHighlight.js @@ -66,24 +66,10 @@ button.editProperties({isActive: onLuciScreen}); wireEventBridge(onLuciScreen); } - - function fromQml(message) { - } - + button.clicked.connect(onClicked); tablet.screenChanged.connect(onScreenChanged); - var moveDebugCursor = false; - Controller.mousePressEvent.connect(function (e) { - if (e.isMiddleButton) { - moveDebugCursor = true; - setDebugCursor(e.x, e.y); - } - }); - Controller.mouseReleaseEvent.connect(function() { moveDebugCursor = false; }); - Controller.mouseMoveEvent.connect(function (e) { if (moveDebugCursor) setDebugCursor(e.x, e.y); }); - - Script.scriptEnding.connect(function () { if (onLuciScreen) { tablet.gotoHomeScreen(); @@ -92,10 +78,93 @@ tablet.screenChanged.disconnect(onScreenChanged); tablet.removeButton(button); }); - - function setDebugCursor(x, y) { + + // Create a Laser pointer used to pick and add objects to selections + var END_DIMENSIONS = { x: 0.05, y: 0.05, z: 0.05 }; + var COLOR1 = {red: 255, green: 0, blue: 0}; + var COLOR2 = {red: 0, green: 255, blue: 0}; + var end1 = { + type: "sphere", + dimensions: END_DIMENSIONS, + color: COLOR1, + ignoreRayIntersection: true } + var end2 = { + type: "sphere", + dimensions: END_DIMENSIONS, + color: COLOR2, + ignoreRayIntersection: true + } + var laser = Pointers.createPointer(PickType.Ray, { + joint: "Mouse", + filter: Picks.PICK_ENTITIES, + renderStates: [{name: "one", end: end1}], + defaultRenderStates: [{name: "one", end: end2, distance: 2.0}], + enabled: true + }); + Pointers.setRenderState(laser, "one"); + var HoveringList = "Hovering" + var hoveringStyle = { + isOutlineSmooth: true, + outlineWidth: 5, + outlineUnoccludedColor: {red: 255, green: 128, blue: 128}, + outlineUnoccludedIntensity: 0.88, + outlineOccludedColor: {red: 255, green: 128, blue: 128}, + outlineOccludedIntensity:0.5, + fillUnoccludedColor: {red: 26, green: 0, blue: 0}, + fillUnoccludedIntensity: 0.0, + fillOccludedColor: {red: 26, green: 0, blue: 0}, + fillOccludedIntensity: 0.0 + } + Selection.enableListHighlight(HoveringList, hoveringStyle) + + var currentSelectionName = "" + var isSelectionEnabled = false + Pointers.disablePointer(laser) + + function fromQml(message) { + tokens = message.split(' ') + print("Received '"+message+"' from hightlight.qml") + if (tokens[0]=="highlight") { + currentSelectionName = tokens[1]; + print("Switching to highlight name "+currentSelectionName) + } else if (tokens[0]=="pick") { + isSelectionEnabled = tokens[1]=='true' + print("Ray picking set to "+isSelectionEnabled.toString()) + if (isSelectionEnabled) { + Pointers.enablePointer(laser) + } else { + Pointers.disablePointer(laser) + Selection.clearSelectedItemsList(HoveringList) + } + time = 0 + } + } + + Entities.hoverEnterEntity.connect(function (id, event) { + // print("hoverEnterEntity"); + if (isSelectionEnabled) Selection.addToSelectedItemsList(HoveringList, "entity", id) + }) + + Entities.hoverOverEntity.connect(function (id, event) { + // print("hoverOverEntity"); + }) + + + Entities.hoverLeaveEntity.connect(function (id, event) { + if (isSelectionEnabled) Selection.removeFromSelectedItemsList(HoveringList, "entity", id) + // print("hoverLeaveEntity"); + }) + + function cleanup() { + Pointers.removePointer(ray); + Selection.disableListHighlight(HoveringList) + Selection.removeListFromMap(HoveringList) + + } + Script.scriptEnding.connect(cleanup); + }()); diff --git a/scripts/developer/utilities/render/highlight.qml b/scripts/developer/utilities/render/highlight.qml index fed42a76c6..a4e819937d 100644 --- a/scripts/developer/utilities/render/highlight.qml +++ b/scripts/developer/utilities/render/highlight.qml @@ -34,7 +34,9 @@ Item { } function resetSelectionView() { - selectionView.resetSelectionView(); + if (selectionView !== undefined) { + selectionView.resetSelectionView(); + } } Column { @@ -69,7 +71,7 @@ Item { id: styleSelectorLoader sourceComponent: selectorWidget width: 300 - anchors.right: parent.right + //anchors.right: parent.right } Component { id: selectorWidget @@ -112,6 +114,18 @@ Item { Separator {} + HifiControls.CheckBox { + text: "Highlight Hovered" + checked: false + onCheckedChanged: { + if (checked) { + root.sendToScript("pick true") + } else { + root.sendToScript("pick false") + } + } + } + Separator {} Rectangle { id: selectionView anchors.left: parent.left @@ -120,15 +134,15 @@ Item { color: hifi.colors.lightGray function resetSelectionView() { - // myModel.resetSelectionView(); - var entities = Selection.getSelectedItemsList(root.listName)["entities"] - //print("resetSelectionView" + JSON.stringify(entities)) myModel.clear() + var entities = Selection.getSelectedItemsList(root.listName)["entities"] + if (entities === undefined) { + return; + } var fLen = entities.length; for (var i = 0; i < fLen; i++) { myModel.append({ "objectID": JSON.stringify(entities[i]) }) - // print("resetSelectionView" + JSON.stringify( entities[i])) - } + } } ListModel { From d81e87771bd3e7d970840284a97297063d6acd26 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 8 Dec 2017 11:27:19 -0800 Subject: [PATCH 305/329] added package-lock file for server console --- server-console/package-lock.json | 4549 ++++++++++++++++++++++++++++++ 1 file changed, 4549 insertions(+) create mode 100644 server-console/package-lock.json diff --git a/server-console/package-lock.json b/server-console/package-lock.json new file mode 100644 index 0000000000..1586716c97 --- /dev/null +++ b/server-console/package-lock.json @@ -0,0 +1,4549 @@ +{ + "name": "HighFidelitySandbox", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz", + "integrity": "sha1-W2A1su6dT7XPhZ8Iqb6BsghJGEM=", + "dev": true + }, + "acorn": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", + "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.0.2", + "longest": "1.0.1", + "repeat-string": "1.5.4" + } + }, + "alter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", + "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=", + "dev": true, + "requires": { + "stable": "0.1.5" + } + }, + "always-tail": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/always-tail/-/always-tail-0.2.0.tgz", + "integrity": "sha1-M5sa9E1QJQqgeg6H7Mw6JOxET/4=", + "requires": { + "debug": "0.7.4" + } + }, + "amdefine": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "integrity": "sha1-/RdHRwDLXMnCtwnwvp0jzjwZjDM=", + "dev": true + }, + "ansi-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "ansicolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", + "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=" + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.7" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.0.1" + } + }, + "arr-flatten": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz", + "integrity": "sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=", + "dev": true + }, + "array-find-index": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz", + "integrity": "sha1-C8Jd2slB7IpJauJY/UrBiAA+868=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.3.tgz", + "integrity": "sha1-H8HRVk7hFiDfym1nAphQkT+fRnk=", + "dev": true + }, + "asar": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-0.11.0.tgz", + "integrity": "sha1-uSbnksMV+MBIxDNx4yWwnJenZGQ=", + "dev": true, + "requires": { + "chromium-pickle-js": "0.1.0", + "commander": "2.9.0", + "cuint": "0.2.1", + "glob": "6.0.4", + "minimatch": "3.0.0", + "mkdirp": "0.5.1", + "mksnapshot": "0.3.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "1.0.4", + "inherits": "2.0.1", + "minimatch": "3.0.0", + "once": "1.3.3", + "path-is-absolute": "1.0.0" + } + } + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + }, + "ast-traverse": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz", + "integrity": "sha1-ac8rg4bxnc2hux4F1o/jWdiJfeY=", + "dev": true + }, + "ast-types": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.12.tgz", + "integrity": "sha1-oNkOQ1G7iHcWyD/WN+v4GK9K38w=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "async-each": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.0.tgz", + "integrity": "sha1-tTGSJsKdmSd99jyK7gQJOqXx058=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + }, + "aws4": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.3.2.tgz", + "integrity": "sha1-054L7kEs7Q6O2Uoj4xTzE6lbn9E=", + "requires": { + "lru-cache": "4.0.1" + } + }, + "babel": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babel/-/babel-5.8.38.tgz", + "integrity": "sha1-37CHwiiUkXxXb7Z86c8yjUWGKfs=", + "dev": true, + "requires": { + "babel-core": "5.8.38", + "chokidar": "1.4.3", + "commander": "2.9.0", + "convert-source-map": "1.2.0", + "fs-readdir-recursive": "0.1.2", + "glob": "5.0.15", + "lodash": "3.10.1", + "output-file-sync": "1.1.1", + "path-exists": "1.0.0", + "path-is-absolute": "1.0.0", + "slash": "1.0.0", + "source-map": "0.5.3" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.4", + "inherits": "2.0.1", + "minimatch": "3.0.0", + "once": "1.3.3", + "path-is-absolute": "1.0.0" + } + } + } + }, + "babel-core": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.38.tgz", + "integrity": "sha1-H8ruedfmG3ULALjlT238nQr4ZVg=", + "dev": true, + "requires": { + "babel-plugin-constant-folding": "1.0.1", + "babel-plugin-dead-code-elimination": "1.0.2", + "babel-plugin-eval": "1.0.1", + "babel-plugin-inline-environment-variables": "1.0.1", + "babel-plugin-jscript": "1.0.4", + "babel-plugin-member-expression-literals": "1.0.1", + "babel-plugin-property-literals": "1.0.1", + "babel-plugin-proto-to-assign": "1.0.4", + "babel-plugin-react-constant-elements": "1.0.3", + "babel-plugin-react-display-name": "1.0.3", + "babel-plugin-remove-console": "1.0.1", + "babel-plugin-remove-debugger": "1.0.1", + "babel-plugin-runtime": "1.0.7", + "babel-plugin-undeclared-variables-check": "1.0.2", + "babel-plugin-undefined-to-void": "1.1.6", + "babylon": "5.8.38", + "bluebird": "2.10.2", + "chalk": "1.1.3", + "convert-source-map": "1.2.0", + "core-js": "1.2.6", + "debug": "2.2.0", + "detect-indent": "3.0.1", + "esutils": "2.0.2", + "fs-readdir-recursive": "0.1.2", + "globals": "6.4.1", + "home-or-tmp": "1.0.0", + "is-integer": "1.0.6", + "js-tokens": "1.0.1", + "json5": "0.4.0", + "lodash": "3.10.1", + "minimatch": "2.0.10", + "output-file-sync": "1.1.1", + "path-exists": "1.0.0", + "path-is-absolute": "1.0.0", + "private": "0.1.6", + "regenerator": "0.8.40", + "regexpu": "1.3.0", + "repeating": "1.1.3", + "resolve": "1.1.7", + "shebang-regex": "1.0.0", + "slash": "1.0.0", + "source-map": "0.5.3", + "source-map-support": "0.2.10", + "to-fast-properties": "1.0.2", + "trim-right": "1.0.1", + "try-resolve": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "1.1.3" + } + } + } + }, + "babel-plugin-constant-folding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz", + "integrity": "sha1-g2HTZMmORJw2kr26Ue/whEKQqo4=", + "dev": true + }, + "babel-plugin-dead-code-elimination": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz", + "integrity": "sha1-X3xFEnTc18zNv7s+C4XdKBIfD2U=", + "dev": true + }, + "babel-plugin-eval": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz", + "integrity": "sha1-ovrtJc5r5preS/7CY/cBaRlZUNo=", + "dev": true + }, + "babel-plugin-inline-environment-variables": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz", + "integrity": "sha1-H1jOkSB61qgmqL9kX6/mj/X+P/4=", + "dev": true + }, + "babel-plugin-jscript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz", + "integrity": "sha1-jzQsOCduh6R9X6CovT1etsytj8w=", + "dev": true + }, + "babel-plugin-member-expression-literals": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz", + "integrity": "sha1-zF7bD6qNyScXDnTW0cAkQAIWJNM=", + "dev": true + }, + "babel-plugin-property-literals": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz", + "integrity": "sha1-AlIwGQAZKYCxwRjv6kjOk6q4MzY=", + "dev": true + }, + "babel-plugin-proto-to-assign": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-proto-to-assign/-/babel-plugin-proto-to-assign-1.0.4.tgz", + "integrity": "sha1-xJ56/QL1d7xNoF6i3wAiUM980SM=", + "dev": true, + "requires": { + "lodash": "3.10.1" + } + }, + "babel-plugin-react-constant-elements": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz", + "integrity": "sha1-lGc26DeEKcvDSdz/YvUcFDs041o=", + "dev": true + }, + "babel-plugin-react-display-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz", + "integrity": "sha1-dU/jiSboQkpOexWrbqYTne4FFPw=", + "dev": true + }, + "babel-plugin-remove-console": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz", + "integrity": "sha1-2PJFVsOgUAXUKqqv0neH9T/wE6c=", + "dev": true + }, + "babel-plugin-remove-debugger": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz", + "integrity": "sha1-/S6jzWGkKK0fO5yJiC/0KT6MFMc=", + "dev": true + }, + "babel-plugin-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/babel-plugin-runtime/-/babel-plugin-runtime-1.0.7.tgz", + "integrity": "sha1-v3x9lm3Vbs1cF/ocslPJrLflSq8=", + "dev": true + }, + "babel-plugin-undeclared-variables-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", + "integrity": "sha1-XPGqU52BP/ZOmWQSkK9iCWX2Xe4=", + "dev": true, + "requires": { + "leven": "1.0.2" + } + }, + "babel-plugin-undefined-to-void": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz", + "integrity": "sha1-f1eO+LeN+uYAM4XYQXph7aBuL4E=", + "dev": true + }, + "babylon": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz", + "integrity": "sha1-7JsSCxG/bM1Bc6GL8hfmC3mFn/0=", + "dev": true + }, + "balanced-match": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz", + "integrity": "sha1-qRzdHr7xqGZZ5w/03vAWJfwtZ1Y=" + }, + "base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", + "dev": true + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "requires": { + "buffers": "0.1.1", + "chainsaw": "0.1.0" + } + }, + "binary-extensions": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.4.0.tgz", + "integrity": "sha1-1zPMtiiYbXsybYhlbg3b06rDUbc=", + "dev": true + }, + "bl": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", + "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=", + "requires": { + "readable-stream": "2.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.1", + "isarray": "1.0.0", + "process-nextick-args": "1.0.6", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + } + } + }, + "bluebird": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz", + "integrity": "sha1-AkpVFylTCIV/FPkfEQb8O1VfRGs=", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz", + "integrity": "sha1-Rr/1ARXUf8mriYVKu4fZgHihCZE=", + "requires": { + "balanced-match": "0.3.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.3.tgz", + "integrity": "sha1-NdTn3aYysz4hXTioqc9DKcnHXSw=", + "dev": true, + "requires": { + "expand-range": "1.8.1", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "breakable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz", + "integrity": "sha1-eEp5eRWjjq0nutRWtVcstLuqeME=", + "dev": true + }, + "btoa": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.1.2.tgz", + "integrity": "sha1-PkC4FmP4HS3WWWpMtxSo3BbPq+A=", + "dev": true + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "cardinal": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-0.5.0.tgz", + "integrity": "sha1-ANX2YdvUqr/ffUHOSKWlm8o1opE=", + "requires": { + "ansicolors": "0.2.1", + "redeyed": "0.5.0" + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.3" + } + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "requires": { + "traverse": "0.3.9" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cheerio": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz", + "integrity": "sha1-dy5wFfLuKZZQltcepBdbdas1SSU=", + "requires": { + "css-select": "1.0.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.8.3", + "lodash": "3.10.1" + } + }, + "chokidar": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.4.3.tgz", + "integrity": "sha1-X+czpNmsrqUbJkVLfllVkWPQ27I=", + "dev": true, + "requires": { + "anymatch": "1.3.0", + "async-each": "1.0.0", + "fsevents": "1.0.11", + "glob-parent": "2.0.0", + "inherits": "2.0.1", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.0", + "readdirp": "2.0.0" + } + }, + "chromium-pickle-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.1.0.tgz", + "integrity": "sha1-HUixB9ghJqLz4hHC6iX4A7pVGyE=", + "dev": true + }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "requires": { + "colors": "1.0.3" + } + }, + "cli-usage": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-usage/-/cli-usage-0.1.2.tgz", + "integrity": "sha1-SXwg6vEuwneTk6m/rCJcX2y5FS0=", + "requires": { + "marked": "0.3.5", + "marked-terminal": "1.6.1", + "minimist": "0.2.0" + }, + "dependencies": { + "minimist": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", + "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=" + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.1", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.0.0" + } + }, + "code-point-at": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", + "integrity": "sha1-9psZLT99keOC5Lcb3bd4eGGasMY=", + "requires": { + "number-is-nan": "1.0.0" + } + }, + "coffee-script": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", + "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "commoner": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.4.tgz", + "integrity": "sha1-mPMzPdOtOZWWuy04Sng7tyE9aPg=", + "dev": true, + "requires": { + "commander": "2.9.0", + "detective": "4.3.1", + "glob": "5.0.15", + "graceful-fs": "4.1.3", + "iconv-lite": "0.4.13", + "mkdirp": "0.5.1", + "private": "0.1.6", + "q": "1.4.1", + "recast": "0.10.33" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.4", + "inherits": "2.0.1", + "minimatch": "3.0.0", + "once": "1.3.3", + "path-is-absolute": "1.0.0" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", + "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=", + "dev": true, + "requires": { + "inherits": "2.0.1", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.1", + "isarray": "1.0.0", + "process-nextick-args": "1.0.6", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + } + } + }, + "convert-source-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.2.0.tgz", + "integrity": "sha1-RMCMJQbxD7PKb9iI1aNETPjWpmk=", + "dev": true + }, + "core-js": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz", + "integrity": "sha1-4jUfbK52T4w05dg5rLamDO+LSkU=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "requires": { + "boom": "2.10.1" + } + }, + "css-select": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz", + "integrity": "sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA=", + "requires": { + "boolbase": "1.0.0", + "css-what": "1.0.0", + "domutils": "1.4.3", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz", + "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w=" + }, + "ctype": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", + "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=", + "dev": true + }, + "cuint": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.1.tgz", + "integrity": "sha1-VlBFzoEnxwxr80D1kcAEin1M/rw=", + "dev": true + }, + "dashdash": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.13.0.tgz", + "integrity": "sha1-parm/Z2OFWYk6w3ZJZ6xK6JFOFo=", + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decompress-zip": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", + "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", + "dev": true, + "requires": { + "binary": "0.3.0", + "graceful-fs": "4.1.3", + "mkpath": "0.1.0", + "nopt": "3.0.6", + "q": "1.4.1", + "readable-stream": "1.1.14", + "touch": "0.0.3" + } + }, + "deep-extend": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", + "integrity": "sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=", + "dev": true + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "defs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.1.tgz", + "integrity": "sha1-siYJ8sehG6ej2xFoBcE5scr/qdI=", + "dev": true, + "requires": { + "alter": "0.2.0", + "ast-traverse": "0.1.1", + "breakable": "1.0.0", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "simple-fmt": "0.1.0", + "simple-is": "0.2.0", + "stringmap": "0.2.2", + "stringset": "0.2.1", + "tryor": "0.1.2", + "yargs": "3.27.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=", + "dev": true + }, + "yargs": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz", + "integrity": "sha1-ISBUaTFuk5Ex1Z8toMbX+YIh6kA=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "detect-indent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", + "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "minimist": "1.2.0", + "repeating": "1.1.3" + } + }, + "detective": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.3.1.tgz", + "integrity": "sha1-n7Bt0e6PDqTbzGB82jnZzh1Pcm8=", + "dev": true, + "requires": { + "acorn": "1.2.2", + "defined": "1.0.0" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz", + "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.0" + } + }, + "electron-compile-cache": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/electron-compile-cache/-/electron-compile-cache-0.7.3.tgz", + "integrity": "sha1-sJqH0zknCJmsSXyDL0DZasp2u9s=", + "dev": true, + "requires": { + "lodash": "3.10.1", + "mkdirp": "0.5.1" + } + }, + "electron-compilers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/electron-compilers/-/electron-compilers-1.0.1.tgz", + "integrity": "sha1-jlPUUj97gVgb7ylmefiWISx4xHI=", + "dev": true, + "requires": { + "babel": "5.8.38", + "babel-core": "5.8.38", + "btoa": "1.1.2", + "cheerio": "0.19.0", + "coffee-script": "1.10.0", + "electron-compile-cache": "0.7.3", + "less": "2.6.1", + "lodash": "3.10.1", + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "promise": "7.1.1", + "rimraf": "2.5.2", + "typescript-simple": "1.0.3" + } + }, + "electron-download": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-2.1.1.tgz", + "integrity": "sha1-AH07HyrTco0nzP5PhJayY/kTijE=", + "dev": true, + "requires": { + "debug": "2.2.0", + "home-path": "1.0.3", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "mv": "2.1.1", + "nugget": "1.6.2", + "path-exists": "1.0.0", + "rc": "1.1.6" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + } + } + }, + "electron-log": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-1.1.1.tgz", + "integrity": "sha1-DboCXtM9DkW/j0DG6b487i+YbCg=" + }, + "electron-osx-sign": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.3.0.tgz", + "integrity": "sha1-SXIB38g1OMVLNPGkBexuIaAf904=", + "dev": true, + "requires": { + "minimist": "1.2.0", + "run-series": "1.1.4" + } + }, + "electron-packager": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-6.0.2.tgz", + "integrity": "sha1-juAGaf6KNjCVAnMvz+0RfX7prCk=", + "dev": true, + "requires": { + "asar": "0.11.0", + "electron-download": "2.1.1", + "electron-osx-sign": "0.3.0", + "extract-zip": "1.5.0", + "fs-extra": "0.26.7", + "get-package-info": "0.0.2", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "mv": "2.1.1", + "ncp": "2.0.0", + "object-assign": "4.0.1", + "plist": "1.2.0", + "rcedit": "0.5.0", + "resolve": "1.1.7", + "rimraf": "2.5.2", + "run-series": "1.1.4" + } + }, + "electron-prebuilt": { + "version": "0.37.5", + "resolved": "https://registry.npmjs.org/electron-prebuilt/-/electron-prebuilt-0.37.5.tgz", + "integrity": "sha1-OkGJgod4FdOnrB+bLi9KcPQg/3A=", + "dev": true, + "requires": { + "electron-download": "2.1.1", + "extract-zip": "1.5.0" + } + }, + "end-of-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", + "integrity": "sha1-6TUyWLqpEIll78QcsO+K3i88+wc=", + "requires": { + "once": "1.3.3" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "optional": true, + "requires": { + "prr": "0.0.0" + } + }, + "error-ex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", + "integrity": "sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima-fb": { + "version": "12001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-12001.1.0-dev-harmony-fb.tgz", + "integrity": "sha1-2EQAOEupXOJnjGF60kp/QICNqRU=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", + "integrity": "sha1-rL1j5W79kTlyK3VfCZudtawfM/Y=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", + "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-zip": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", + "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=", + "dev": true, + "requires": { + "concat-stream": "1.5.0", + "debug": "0.7.4", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + } + } + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "filename-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz", + "integrity": "sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.0.0", + "randomatic": "1.1.5", + "repeat-element": "1.1.2", + "repeat-string": "1.5.4" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "for-in": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.5.tgz", + "integrity": "sha1-AHN04rbVxnQgoUeb23WgSHK3OMQ=", + "dev": true + }, + "for-own": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.4.tgz", + "integrity": "sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=", + "dev": true, + "requires": { + "for-in": "0.1.5" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "1.0.0-rc4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", + "integrity": "sha1-BaxrwiIntD5EYfSIFhVUaZ1Pi14=", + "requires": { + "async": "1.5.2", + "combined-stream": "1.0.5", + "mime-types": "2.1.10" + } + }, + "fs-extra": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", + "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "requires": { + "graceful-fs": "4.1.3", + "jsonfile": "2.2.3", + "klaw": "1.1.3", + "path-is-absolute": "1.0.0", + "rimraf": "2.5.2" + } + }, + "fs-readdir-recursive": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz", + "integrity": "sha1-MVtPuMHKW4xH3v7zGdBz2tNWgFk=", + "dev": true + }, + "fsevents": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.11.tgz", + "integrity": "sha1-MD1AUeQRqVp60Yfm+Mz/6TbKeKw=", + "dev": true, + "optional": true, + "requires": { + "nan": "2.2.1", + "node-pre-gyp": "0.6.25" + }, + "dependencies": { + "ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", + "dev": true + }, + "ansi-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", + "integrity": "sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=", + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.0.6" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.3.2.tgz", + "integrity": "sha1-054L7kEs7Q6O2Uoj4xTzE6lbn9E=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "4.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz", + "integrity": "sha1-E0OVXtry432bnn7nJB4nxLn7cr4=", + "dev": true, + "optional": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.0.0" + }, + "dependencies": { + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true, + "optional": true + }, + "yallist": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz", + "integrity": "sha1-MGxUODXwnuGkyyO3vOmrNByRzdQ=", + "dev": true, + "optional": true + } + } + } + } + }, + "bl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", + "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "2.0.6" + } + }, + "block-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz", + "integrity": "sha1-Boj0baK7+c/wxPaCJaDLlcvopGs=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "optional": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.13.0.tgz", + "integrity": "sha1-parm/Z2OFWYk6w3ZJZ6xK6JFOFo=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "optional": true, + "requires": { + "ms": "0.7.1" + } + }, + "deep-extend": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", + "integrity": "sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=", + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "optional": true + }, + "extend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", + "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=", + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": true + }, + "form-data": { + "version": "1.0.0-rc4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", + "integrity": "sha1-BaxrwiIntD5EYfSIFhVUaZ1Pi14=", + "dev": true, + "optional": true, + "requires": { + "async": "1.5.2", + "combined-stream": "1.0.5", + "mime-types": "2.1.10" + } + }, + "fstream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.8.tgz", + "integrity": "sha1-fo16c6uzZH7zbkuKFcqAHboD0Dg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.3", + "inherits": "2.0.1", + "mkdirp": "0.5.1", + "rimraf": "2.5.2" + } + }, + "fstream-ignore": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.3.tgz", + "integrity": "sha1-THTZH6iLIrQvT4ahiigg3XnY/N0=", + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.8", + "inherits": "2.0.1", + "minimatch": "3.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", + "integrity": "sha1-UjYVelHk8ATBd/s8Un/33Xjw74M=", + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "1.1.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz", + "integrity": "sha1-Rr/1ARXUf8mriYVKu4fZgHihCZE=", + "dev": true, + "optional": true, + "requires": { + "balanced-match": "0.3.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz", + "integrity": "sha1-qRzdHr7xqGZZ5w/03vAWJfwtZ1Y=", + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true, + "optional": true + } + } + } + } + } + } + }, + "gauge": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", + "dev": true, + "optional": true, + "requires": { + "ansi": "0.3.1", + "has-unicode": "2.0.0", + "lodash.pad": "4.1.0", + "lodash.padend": "4.2.0", + "lodash.padstart": "4.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true, + "optional": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "optional": true, + "requires": { + "is-property": "1.0.2" + } + }, + "graceful-fs": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz", + "integrity": "sha1-kgM84RETxB4mKNYf36QLwQ3AFVw=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "optional": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.9.0", + "is-my-json-valid": "2.13.1", + "pinkie-promise": "2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "2.0.0" + } + }, + "has-unicode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.0.tgz", + "integrity": "sha1-o82Wwwe6QdVZxaLuQIwSoRxMLsM=", + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.2.2", + "sshpk": "1.7.4" + } + }, + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true, + "optional": true + }, + "is-my-json-valid": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", + "integrity": "sha1-1Vd4qC/rawlj/0vhEdXRaE6JBwc=", + "dev": true, + "optional": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "2.0.0", + "xtend": "4.0.1" + } + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true, + "optional": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.0" + } + }, + "jsbn": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", + "integrity": "sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=", + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", + "integrity": "sha1-UDVPGfYDkXxpX3C4Wvp3w7DyNQY=", + "dev": true, + "optional": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true + }, + "jsonpointer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", + "integrity": "sha1-OvHdIP6FRjkQ1GmjheMwF9KgMNk=", + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz", + "integrity": "sha1-8gyQaskqvVjjt5rIvHCkiDJRLaE=", + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2", + "json-schema": "0.2.2", + "verror": "1.3.6" + } + }, + "lodash.pad": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.1.0.tgz", + "integrity": "sha1-2746loH8y2mXBHOiJj9QwZasOqk=", + "dev": true, + "optional": true, + "requires": { + "lodash.repeat": "4.0.0", + "lodash.tostring": "4.1.2" + } + }, + "lodash.padend": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.2.0.tgz", + "integrity": "sha1-uE6MNAHUU4BVxuMhpR467hmIGhg=", + "dev": true, + "optional": true, + "requires": { + "lodash.repeat": "4.0.0", + "lodash.tostring": "4.1.2" + } + }, + "lodash.padstart": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.2.0.tgz", + "integrity": "sha1-42+J/Ww7UHIhkIdpW3Zd6D7JaYU=", + "dev": true, + "optional": true, + "requires": { + "lodash.repeat": "4.0.0", + "lodash.tostring": "4.1.2" + } + }, + "lodash.repeat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.0.0.tgz", + "integrity": "sha1-qvVwsqsL+w3abW6TKR1UswsffSI=", + "dev": true, + "requires": { + "lodash.tostring": "4.1.2" + } + }, + "lodash.tostring": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.tostring/-/lodash.tostring-4.1.2.tgz", + "integrity": "sha1-fTJqXPZNpCmPL9NbaI2EgmdTUog=", + "dev": true + }, + "mime-db": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.22.0.tgz", + "integrity": "sha1-qyOmNy3J2G09yRIb0OvTgQWhkEo=", + "dev": true + }, + "mime-types": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.10.tgz", + "integrity": "sha1-uTx8tDYuFtQQcqflRTj7TUMHCDc=", + "dev": true, + "requires": { + "mime-db": "1.22.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.25", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.25.tgz", + "integrity": "sha1-LGgYd15vHfXjU7qAJPHAEYcmVFs=", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "2.0.3", + "rc": "1.1.6", + "request": "2.69.0", + "rimraf": "2.5.2", + "semver": "5.1.0", + "tar": "2.2.1", + "tar-pack": "3.1.3" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.0.7" + }, + "dependencies": { + "abbrev": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz", + "integrity": "sha1-W2A1su6dT7XPhZ8Iqb6BsghJGEM=", + "dev": true, + "optional": true + } + } + } + } + }, + "node-uuid": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", + "integrity": "sha1-baWhdmjEs91ZYjvaEc9/pMH2Cm8=", + "dev": true, + "optional": true + }, + "npmlog": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.3.tgz", + "integrity": "sha1-Ag+ZNR8MAuOZxnS6JW58TTs90pg=", + "dev": true, + "optional": true, + "requires": { + "ansi": "0.3.1", + "are-we-there-yet": "1.1.2", + "gauge": "1.2.7" + } + }, + "oauth-sign": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.1.tgz", + "integrity": "sha1-GCQ5vbkTeL90YOdcZOpD5kSN7wY=", + "dev": true, + "optional": true + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "optional": true, + "requires": { + "wrappy": "1.0.1" + } + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "optional": true + }, + "pinkie-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz", + "integrity": "sha1-TINTjeH25mDCngoTRGhE96foglk=", + "dev": true, + "optional": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "process-nextick-args": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.6.tgz", + "integrity": "sha1-D5awAc6pCxJZLOVm7bl+wR5pvQU=", + "dev": true + }, + "qs": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.0.2.tgz", + "integrity": "sha1-iMaNWQ6O1Wx2x581LBe5gkZqv80=", + "dev": true, + "optional": true + }, + "rc": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", + "integrity": "sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=", + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.1", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "1.0.4" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.1", + "isarray": "1.0.0", + "process-nextick-args": "1.0.6", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.69.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.69.0.tgz", + "integrity": "sha1-z5HS4AB1KxIXFVwAUkGRGZGiNGo=", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.3.2", + "bl": "1.0.3", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.0", + "forever-agent": "0.6.1", + "form-data": "1.0.0-rc4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.10", + "node-uuid": "1.4.7", + "oauth-sign": "0.8.1", + "qs": "6.0.2", + "stringstream": "0.0.5", + "tough-cookie": "2.2.2", + "tunnel-agent": "0.4.2" + } + }, + "rimraf": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.2.tgz", + "integrity": "sha1-YrqUf6TAtDY4Oa7+zU8PutYFlyY=", + "dev": true, + "requires": { + "glob": "7.0.3" + }, + "dependencies": { + "glob": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.3.tgz", + "integrity": "sha1-CqI1kxpKlqwT1g/6wvuHe9btT1g=", + "dev": true, + "requires": { + "inflight": "1.0.4", + "inherits": "2.0.1", + "minimatch": "3.0.0", + "once": "1.3.3", + "path-is-absolute": "1.0.0" + }, + "dependencies": { + "inflight": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "integrity": "sha1-bLtFIevVHODsCpNr/XZX736bFyo=", + "dev": true, + "requires": { + "once": "1.3.3", + "wrappy": "1.0.1" + }, + "dependencies": { + "wrappy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "integrity": "sha1-HmWWmWXMvC20VIxrhKbyxa7dRzk=", + "dev": true + } + } + }, + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "minimatch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", + "integrity": "sha1-UjYVelHk8ATBd/s8Un/33Xjw74M=", + "dev": true, + "requires": { + "brace-expansion": "1.1.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz", + "integrity": "sha1-Rr/1ARXUf8mriYVKu4fZgHihCZE=", + "dev": true, + "requires": { + "balanced-match": "0.3.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz", + "integrity": "sha1-qRzdHr7xqGZZ5w/03vAWJfwtZ1Y=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + } + } + } + } + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1.0.1" + }, + "dependencies": { + "wrappy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "integrity": "sha1-HmWWmWXMvC20VIxrhKbyxa7dRzk=", + "dev": true + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "integrity": "sha1-Jj2tpmqz8vsQv3+dJN2PPlcO+RI=", + "dev": true + } + } + } + } + }, + "semver": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", + "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=", + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.4.tgz", + "integrity": "sha1-rXtH3vymHIQV2WQkO2KwzmD7yjg=", + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "0.2.0", + "dashdash": "1.13.0", + "ecc-jsbn": "0.1.1", + "jodid25519": "1.0.2", + "jsbn": "0.1.0", + "tweetnacl": "0.14.3" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "2.0.0" + } + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true, + "optional": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "0.0.8", + "fstream": "1.0.8", + "inherits": "2.0.1" + } + }, + "tar-pack": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.3.tgz", + "integrity": "sha1-YRt+YusvJ67aZFVPen+0iQDH4Vc=", + "dev": true, + "optional": true, + "requires": { + "debug": "2.2.0", + "fstream": "1.0.8", + "fstream-ignore": "1.0.3", + "once": "1.3.3", + "readable-stream": "2.0.6", + "rimraf": "2.5.2", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", + "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=", + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz", + "integrity": "sha1-EQTj82rIcSXChycAZ9WC0YEzv+4=", + "dev": true, + "optional": true + }, + "tweetnacl": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz", + "integrity": "sha1-PaOC9nDyXe1417PReSEZvKC3Ey0=", + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "integrity": "sha1-HmWWmWXMvC20VIxrhKbyxa7dRzk=", + "dev": true, + "optional": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true, + "optional": true + } + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "requires": { + "is-property": "1.0.2" + } + }, + "get-package-info": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-0.0.2.tgz", + "integrity": "sha1-csOPvuLnZyhCSgDcFOJN0aKMI5E=", + "dev": true, + "requires": { + "bluebird": "3.3.5", + "lodash.get": "4.2.1", + "resolve": "1.1.7" + }, + "dependencies": { + "bluebird": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.3.5.tgz", + "integrity": "sha1-XudH8ce9lnZYtoOTZDCu51OVWjQ=", + "dev": true + } + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "glob": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.3.tgz", + "integrity": "sha1-CqI1kxpKlqwT1g/6wvuHe9btT1g=", + "requires": { + "inflight": "1.0.4", + "inherits": "2.0.1", + "minimatch": "3.0.0", + "once": "1.3.3", + "path-is-absolute": "1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz", + "integrity": "sha1-hJgDKzttHMge68X3lpDY/in6v08=", + "dev": true + }, + "graceful-fs": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz", + "integrity": "sha1-kgM84RETxB4mKNYf36QLwQ3AFVw=" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "requires": { + "chalk": "1.1.3", + "commander": "2.9.0", + "is-my-json-valid": "2.13.1", + "pinkie-promise": "2.0.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.0.0" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "home-or-tmp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", + "integrity": "sha1-S58eQIAMPlDGwn94FnavzOcfOYU=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.1", + "user-home": "1.1.1" + } + }, + "home-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.3.tgz", + "integrity": "sha1-ns5Z/sPwMubRC1Q0/uJk30wt4y8=", + "dev": true + }, + "hosted-git-info": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.4.tgz", + "integrity": "sha1-2elTsmmIvogJbEbpJklNlgTDAPg=", + "dev": true + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "1.1.14" + }, + "dependencies": { + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.2.2", + "sshpk": "1.7.4" + } + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + }, + "image-size": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.4.0.tgz", + "integrity": "sha1-1LTh9hlS5MvBzqmmsMkV/stwdRA=", + "dev": true, + "optional": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + }, + "dependencies": { + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.1" + } + } + } + }, + "inflight": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "integrity": "sha1-bLtFIevVHODsCpNr/XZX736bFyo=", + "requires": { + "once": "1.3.3", + "wrappy": "1.0.1" + } + }, + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "requires": { + "is-relative": "0.1.3" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.4.0" + } + }, + "is-buffer": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz", + "integrity": "sha1-24l/w/esotUN6UtsjCiWpHcWJ68=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz", + "integrity": "sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", + "integrity": "sha1-ZDhgPq6+J5OUj/SkJi7I2z1iWXs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.0" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-integer": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz", + "integrity": "sha1-UnOBn62ogNEj4awAqTjnFy3Y2V4=", + "dev": true, + "requires": { + "is-finite": "1.0.1" + } + }, + "is-my-json-valid": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", + "integrity": "sha1-1Vd4qC/rawlj/0vhEdXRaE6JBwc=", + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "2.0.0", + "xtend": "4.0.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" + }, + "is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", + "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=" + }, + "isobject": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.0.0.tgz", + "integrity": "sha1-II3ocr1zeMKpKvlCij9W65GhIsQ=", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jodid25519": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "optional": true, + "requires": { + "jsbn": "0.1.0" + } + }, + "js-tokens": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz", + "integrity": "sha1-zENaXIuUrRWst5gxQPyAGCyJrq4=", + "dev": true + }, + "jsbn": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", + "integrity": "sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=", + "optional": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json-schema": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", + "integrity": "sha1-UDVPGfYDkXxpX3C4Wvp3w7DyNQY=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", + "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0=", + "dev": true + }, + "jsonfile": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.2.3.tgz", + "integrity": "sha1-4lK5mmr5AdPsQfMyWJyQUJp7xgU=" + }, + "jsonpointer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", + "integrity": "sha1-OvHdIP6FRjkQ1GmjheMwF9KgMNk=" + }, + "jsprim": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz", + "integrity": "sha1-8gyQaskqvVjjt5rIvHCkiDJRLaE=", + "requires": { + "extsprintf": "1.0.2", + "json-schema": "0.2.2", + "verror": "1.3.6" + } + }, + "kind-of": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.2.tgz", + "integrity": "sha1-GH20JwRufpCUVpLmdoZovWkA3qA=", + "dev": true, + "requires": { + "is-buffer": "1.1.3" + } + }, + "klaw": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.1.3.tgz", + "integrity": "sha1-faM8a0L5s9yc7ADRfxOvAX/MJyE=" + }, + "lazy-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.3.tgz", + "integrity": "sha1-6XdUYY+ciGu5mbL/aceLgkU9ZnQ=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "less": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/less/-/less-2.6.1.tgz", + "integrity": "sha1-ZY4B7JrDFJlZxrbfvPvAoXCv2no=", + "dev": true, + "requires": { + "errno": "0.1.4", + "graceful-fs": "4.1.3", + "image-size": "0.4.0", + "mime": "1.3.4", + "mkdirp": "0.5.1", + "promise": "7.1.1", + "request": "2.71.0", + "source-map": "0.5.3" + } + }, + "leven": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", + "integrity": "sha1-kUS27ryl8dBoAWnxpncNzqYLdcM=", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.3", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + }, + "lodash._arraycopy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", + "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=" + }, + "lodash._arrayeach": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", + "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=" + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._baseclone": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", + "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", + "requires": { + "lodash._arraycopy": "3.0.0", + "lodash._arrayeach": "3.0.0", + "lodash._baseassign": "3.2.0", + "lodash._basefor": "3.0.3", + "lodash.isarray": "3.0.4", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + }, + "lodash._basefor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", + "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=" + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" + }, + "lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "requires": { + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9", + "lodash.restparam": "3.6.1" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash._stringtopath": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/lodash._stringtopath/-/lodash._stringtopath-4.7.1.tgz", + "integrity": "sha1-1GYKFaWZeYj6WTAaO/2gXJpt494=", + "dev": true + }, + "lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._createassigner": "3.1.1", + "lodash.keys": "3.1.2" + } + }, + "lodash.clonedeep": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-3.0.2.tgz", + "integrity": "sha1-oKHkDYKl6on/WxR7hETtY9koJ9s=", + "requires": { + "lodash._baseclone": "3.3.0", + "lodash._bindcallback": "3.0.1" + } + }, + "lodash.get": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.2.1.tgz", + "integrity": "sha1-bpr8h7imwCFgZnpw9sjOEHiusRs=", + "dev": true, + "requires": { + "lodash._stringtopath": "4.7.1" + } + }, + "lodash.isarguments": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.8.tgz", + "integrity": "sha1-W/jaiH8B8qnknAoXXNrrMYoOQ9w=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.0.8", + "lodash.isarray": "3.0.4" + } + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loud-rejection": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.3.0.tgz", + "integrity": "sha1-8omjkvF9K6rPGU0KZzAEOUQzsRU=", + "dev": true, + "requires": { + "array-find-index": "1.0.1", + "signal-exit": "2.1.2" + } + }, + "lru-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz", + "integrity": "sha1-E0OVXtry432bnn7nJB4nxLn7cr4=", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "marked": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz", + "integrity": "sha1-QROhWsXXvKFYpargciRYe5+hW5Q=" + }, + "marked-terminal": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-1.6.1.tgz", + "integrity": "sha1-BM0cfIsO9I2z9oAQ1zpXqWYcbM8=", + "requires": { + "cardinal": "0.5.0", + "chalk": "1.1.3", + "cli-table": "0.3.1", + "lodash.assign": "3.2.0", + "node-emoji": "0.1.0" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.3.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.3.5", + "object-assign": "4.0.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } + }, + "micromatch": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.7.tgz", + "integrity": "sha1-Ly6F70YUDb6my1XnObaxGzDqpQk=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.3", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.0", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.0.2", + "normalize-path": "2.0.1", + "object.omit": "2.0.0", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.22.0.tgz", + "integrity": "sha1-qyOmNy3J2G09yRIb0OvTgQWhkEo=" + }, + "mime-types": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.10.tgz", + "integrity": "sha1-uTx8tDYuFtQQcqflRTj7TUMHCDc=", + "requires": { + "mime-db": "1.22.0" + } + }, + "minimatch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", + "integrity": "sha1-UjYVelHk8ATBd/s8Un/33Xjw74M=", + "requires": { + "brace-expansion": "1.1.3" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "mkpath": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", + "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=", + "dev": true + }, + "mksnapshot": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.0.tgz", + "integrity": "sha1-MuqYStb1MjJMaj+uZACHa4WChAc=", + "dev": true, + "requires": { + "decompress-zip": "0.3.0", + "fs-extra": "0.26.7", + "request": "2.55.0" + }, + "dependencies": { + "asn1": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=", + "dev": true + }, + "assert-plus": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=", + "dev": true + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "aws-sign2": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=", + "dev": true + }, + "bl": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", + "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=", + "dev": true, + "requires": { + "readable-stream": "1.0.34" + } + }, + "caseless": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz", + "integrity": "sha1-t7Zc5r8UE4hlOc/VM/CzDv+pz4g=", + "dev": true + }, + "combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "dev": true, + "requires": { + "delayed-stream": "0.0.5" + } + }, + "delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", + "dev": true + }, + "form-data": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=", + "dev": true, + "requires": { + "async": "0.9.2", + "combined-stream": "0.0.7", + "mime-types": "2.0.14" + } + }, + "har-validator": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", + "integrity": "sha1-2DhCsOtMQ1lgrrEIoGejqpTA7rI=", + "dev": true, + "requires": { + "bluebird": "2.10.2", + "chalk": "1.1.3", + "commander": "2.9.0", + "is-my-json-valid": "2.13.1" + } + }, + "hawk": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", + "integrity": "sha1-HnMc45RH+h0PbXB/e87r7A/R7B8=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "http-signature": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", + "dev": true, + "requires": { + "asn1": "0.1.11", + "assert-plus": "0.1.5", + "ctype": "0.5.3" + } + }, + "mime-db": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=", + "dev": true + }, + "mime-types": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", + "dev": true, + "requires": { + "mime-db": "1.12.0" + } + }, + "oauth-sign": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz", + "integrity": "sha1-fb6uRPbKRU4fFoRR1jB0ZzWBPOM=", + "dev": true + }, + "qs": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", + "integrity": "sha1-9854jld33wtQENp/fE5zujJHD1o=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.1", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "request": { + "version": "2.55.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.55.0.tgz", + "integrity": "sha1-11wc32eddrsQD5v/4f5VG1wk6T0=", + "dev": true, + "requires": { + "aws-sign2": "0.5.0", + "bl": "0.9.5", + "caseless": "0.9.0", + "combined-stream": "0.0.7", + "forever-agent": "0.6.1", + "form-data": "0.2.0", + "har-validator": "1.8.0", + "hawk": "2.3.1", + "http-signature": "0.10.1", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.0.14", + "node-uuid": "1.4.7", + "oauth-sign": "0.6.0", + "qs": "2.4.2", + "stringstream": "0.0.5", + "tough-cookie": "2.2.2", + "tunnel-agent": "0.4.2" + } + } + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "dev": true, + "requires": { + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "rimraf": "2.4.5" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "1.0.4", + "inherits": "2.0.1", + "minimatch": "3.0.0", + "once": "1.3.3", + "path-is-absolute": "1.0.0" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "dev": true, + "requires": { + "glob": "6.0.4" + } + } + } + }, + "nan": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.2.1.tgz", + "integrity": "sha1-1oaT9rNLtB1mvGizpPne/HnXFJs=", + "dev": true, + "optional": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true + }, + "node-emoji": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-0.1.0.tgz", + "integrity": "sha1-P0QkpVuo7VDCVKE4WLJEVPQYJgI=" + }, + "node-notifier": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-4.5.0.tgz", + "integrity": "sha1-Ap7pjXqbxOlsnLUb6dTzYTI/6ps=", + "requires": { + "cli-usage": "0.1.2", + "growly": "1.3.0", + "lodash.clonedeep": "3.0.2", + "minimist": "1.2.0", + "semver": "5.1.0", + "shellwords": "0.1.0", + "which": "1.2.4" + } + }, + "node-uuid": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", + "integrity": "sha1-baWhdmjEs91ZYjvaEc9/pMH2Cm8=" + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.0.7" + } + }, + "normalize-package-data": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", + "integrity": "sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=", + "dev": true, + "requires": { + "hosted-git-info": "2.1.4", + "is-builtin-module": "1.0.0", + "semver": "5.1.0", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz", + "integrity": "sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=", + "dev": true + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "requires": { + "boolbase": "1.0.0" + } + }, + "nugget": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/nugget/-/nugget-1.6.2.tgz", + "integrity": "sha1-iMpuA7pXBqmRc/XaCQJZPWvK4Qc=", + "dev": true, + "requires": { + "debug": "2.2.0", + "minimist": "1.2.0", + "pretty-bytes": "1.0.4", + "progress-stream": "1.2.0", + "request": "2.71.0", + "single-line-log": "0.4.1", + "throttleit": "0.0.2" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "throttleit": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", + "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", + "dev": true + } + } + }, + "number-is-nan": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", + "integrity": "sha1-wCD1KcUoKt/dIz2R1LGBw9aG3Es=" + }, + "oauth-sign": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.1.tgz", + "integrity": "sha1-GCQ5vbkTeL90YOdcZOpD5kSN7wY=" + }, + "object-assign": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz", + "integrity": "sha1-mVBEVsNZi1ytT8WcJuipuxB/4L0=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "object.omit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.0.tgz", + "integrity": "sha1-hoWXMz1U5gZilAu0WGBd1q4S/pQ=", + "dev": true, + "requires": { + "for-own": "0.1.4", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "requires": { + "wrappy": "1.0.1" + } + }, + "os-homedir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", + "integrity": "sha1-DWK99EuRb9O73PLKsZGUj7CU8Ac=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", + "integrity": "sha1-6bQjoe2vR5iCVi6S7XHXdDoHG24=", + "dev": true + }, + "output-file-sync": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", + "integrity": "sha1-pGU5l8LfY8mBH38dehIIQE7TLp4=", + "dev": true, + "requires": { + "mkdirp": "0.5.1", + "xtend": "4.0.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.2", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.0" + } + }, + "path-exists": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", + "integrity": "sha1-1aiZjrce83p0w06w2eum6HjuoIE=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "integrity": "sha1-Jj2tpmqz8vsQv3+dJN2PPlcO+RI=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.3", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "plist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-1.2.0.tgz", + "integrity": "sha1-CEtQk93JJQbiWfh0uNmxr7jHlZM=", + "dev": true, + "requires": { + "base64-js": "0.0.8", + "util-deprecate": "1.0.2", + "xmlbuilder": "4.0.0", + "xmldom": "0.1.22" + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "3.7.0" + } + }, + "private": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz", + "integrity": "sha1-VcapdtD5uvuZJIUTUP5HubX7t8E=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.6.tgz", + "integrity": "sha1-D5awAc6pCxJZLOVm7bl+wR5pvQU=" + }, + "progress-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", + "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", + "dev": true, + "requires": { + "speedometer": "0.1.4", + "through2": "0.2.3" + } + }, + "promise": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", + "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=", + "dev": true, + "requires": { + "asap": "2.0.3" + } + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true, + "optional": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "pump": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.1.tgz", + "integrity": "sha1-8fFAn7m9EIW721drQ7hOxLXq3Bo=", + "requires": { + "end-of-stream": "1.1.0", + "once": "1.3.3" + } + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qs": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.1.0.tgz", + "integrity": "sha1-7B0WJrJCeNmfD99FSeUk4k7O6yY=" + }, + "randomatic": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.5.tgz", + "integrity": "sha1-Xp718tVzxnvSuBJK6QtRVuRXhAs=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "kind-of": "3.0.2" + } + }, + "rc": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", + "integrity": "sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=", + "dev": true, + "requires": { + "deep-extend": "0.4.1", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "1.0.4" + } + }, + "rcedit": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-0.5.0.tgz", + "integrity": "sha1-72a1p/AxB1IUGjTiLyPCJDPBzxU=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.3.5", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.1", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "readdirp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.0.0.tgz", + "integrity": "sha1-zAm6XRLY/rhkvHX24uvBNwYMvYI=", + "dev": true, + "requires": { + "graceful-fs": "4.1.3", + "minimatch": "2.0.10", + "readable-stream": "2.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "1.1.3" + } + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.1", + "isarray": "1.0.0", + "process-nextick-args": "1.0.6", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + } + } + }, + "recast": { + "version": "0.10.33", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", + "integrity": "sha1-lCgI96oBbx+nFCxGHX5XBKqo1pc=", + "dev": true, + "requires": { + "ast-types": "0.8.12", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "private": "0.1.6", + "source-map": "0.5.3" + }, + "dependencies": { + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=", + "dev": true + } + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "redeyed": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-0.5.0.tgz", + "integrity": "sha1-erAA5g7jh1rBFdKe2zLBQDxsJdE=", + "requires": { + "esprima-fb": "12001.1.0-dev-harmony-fb" + } + }, + "regenerate": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz", + "integrity": "sha1-njC6aKa9lqw9y6YqsJ1V1LL8vgQ=", + "dev": true + }, + "regenerator": { + "version": "0.8.40", + "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.40.tgz", + "integrity": "sha1-oORXxY69uuV1yfjNdRJ+k3VkNdg=", + "dev": true, + "requires": { + "commoner": "0.10.4", + "defs": "1.1.1", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "private": "0.1.6", + "recast": "0.10.33", + "through": "2.3.8" + }, + "dependencies": { + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=", + "dev": true + } + } + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } + }, + "regexpu": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.3.0.tgz", + "integrity": "sha1-5TTcmRqeWEYFDJjebX3UpVyeoW0=", + "dev": true, + "requires": { + "esprima": "2.7.2", + "recast": "0.10.33", + "regenerate": "1.2.1", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + }, + "dependencies": { + "esprima": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz", + "integrity": "sha1-9DvlQ2CZhOrkTJM6xjNSpq818zk=", + "dev": true + } + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz", + "integrity": "sha1-ZOwMkeD0tHX5DVtkNlHj5uW2wtU=", + "dev": true + }, + "repeating": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", + "dev": true, + "requires": { + "is-finite": "1.0.1" + } + }, + "request": { + "version": "2.71.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.71.0.tgz", + "integrity": "sha1-bxRkPJxaZ8ruapXPjvBHfVYDvZE=", + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.3.2", + "bl": "1.1.2", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.0", + "forever-agent": "0.6.1", + "form-data": "1.0.0-rc4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.10", + "node-uuid": "1.4.7", + "oauth-sign": "0.8.1", + "qs": "6.1.0", + "stringstream": "0.0.5", + "tough-cookie": "2.2.2", + "tunnel-agent": "0.4.2" + } + }, + "request-progress": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-1.0.2.tgz", + "integrity": "sha1-XUBvCBMJ32G0qKqDzVc032Pxi/U=", + "requires": { + "throttleit": "1.0.0" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.2.tgz", + "integrity": "sha1-YrqUf6TAtDY4Oa7+zU8PutYFlyY=", + "requires": { + "glob": "7.0.3" + } + }, + "run-series": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.4.tgz", + "integrity": "sha1-iac93F51ye+KtjIMChYA1qQRebk=", + "dev": true + }, + "semver": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", + "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=" + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.0.tgz", + "integrity": "sha1-Zq/Ue2oSky2Qccv9mKUueFzQuhQ=" + }, + "signal-exit": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-2.1.2.tgz", + "integrity": "sha1-N1h5sfkuvDszRIDQONxUam1VhWQ=", + "dev": true + }, + "simple-fmt": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz", + "integrity": "sha1-GRv1ZqWeZTBILLJatTtKjchcOms=", + "dev": true + }, + "simple-is": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", + "integrity": "sha1-Krt1qt453rXMgVzhDmGRFkhQuvA=", + "dev": true + }, + "single-line-log": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-0.4.1.tgz", + "integrity": "sha1-h6VWSfdJ14PsDc2AToFA2Yc8fO4=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "requires": { + "hoek": "2.16.3" + } + }, + "source-map": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz", + "integrity": "sha1-gmdLhacbC+dsPnQW0V6fUlLrO+A=", + "dev": true + }, + "source-map-support": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", + "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=", + "dev": true, + "requires": { + "source-map": "0.1.32" + }, + "dependencies": { + "source-map": { + "version": "0.1.32", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", + "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", + "dev": true, + "requires": { + "amdefine": "1.0.0" + } + } + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.1" + } + }, + "spdx-exceptions": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.4.tgz", + "integrity": "sha1-IguEI5EZrpBFqJLbgag/TOFvgP0=", + "dev": true + }, + "spdx-expression-parse": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz", + "integrity": "sha1-1SsUtelnB3FECvIlvLVjEirEUvY=", + "dev": true, + "requires": { + "spdx-exceptions": "1.0.4", + "spdx-license-ids": "1.2.1" + } + }, + "spdx-license-ids": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz", + "integrity": "sha1-0H6hek0v2TUfnZTi/5zsdBgP6PM=", + "dev": true + }, + "speedometer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", + "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", + "dev": true + }, + "sshpk": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.4.tgz", + "integrity": "sha1-rXtH3vymHIQV2WQkO2KwzmD7yjg=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "0.2.0", + "dashdash": "1.13.0", + "ecc-jsbn": "0.1.1", + "jodid25519": "1.0.2", + "jsbn": "0.1.0", + "tweetnacl": "0.14.3" + } + }, + "stable": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz", + "integrity": "sha1-CCMvYMcy6YkHhLW+0HNPizKoh7k=", + "dev": true + }, + "string-width": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", + "integrity": "sha1-ySEptvHX9SrPmvQkom44ZKBc6wo=", + "requires": { + "code-point-at": "1.0.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "stringmap": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", + "integrity": "sha1-VWwTeyWPlCuHdvWy71gqoGnX0bE=", + "dev": true + }, + "stringset": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz", + "integrity": "sha1-7yWcTjSTRDd/zRyRPdLoSMnAQrU=", + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "tar-fs": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.12.0.tgz", + "integrity": "sha1-pqgFU9ilTHPeHQrg553ncDVgXh0=", + "requires": { + "mkdirp": "0.5.1", + "pump": "1.0.1", + "tar-stream": "1.5.1" + } + }, + "tar-stream": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.1.tgz", + "integrity": "sha1-UWx00b6j4THMC5NIkpyag/CirRE=", + "requires": { + "bl": "1.1.2", + "end-of-stream": "1.1.0", + "readable-stream": "2.0.6", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.1", + "isarray": "1.0.0", + "process-nextick-args": "1.0.6", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + } + } + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", + "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "dev": true, + "requires": { + "readable-stream": "1.1.14", + "xtend": "2.1.2" + }, + "dependencies": { + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "0.4.0" + } + } + } + }, + "to-fast-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.2.tgz", + "integrity": "sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=", + "dev": true + }, + "touch": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", + "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", + "dev": true, + "requires": { + "nopt": "1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1.0.7" + } + } + } + }, + "tough-cookie": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", + "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=" + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "try-resolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz", + "integrity": "sha1-z95vq9ctY+V5fPqrhzq76OcA6RI=", + "dev": true + }, + "tryor": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz", + "integrity": "sha1-gUXkynyv9ArN48z5Rui4u3W0Fys=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz", + "integrity": "sha1-EQTj82rIcSXChycAZ9WC0YEzv+4=" + }, + "tweetnacl": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz", + "integrity": "sha1-PaOC9nDyXe1417PReSEZvKC3Ey0=", + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-1.4.1.tgz", + "integrity": "sha1-602phtG38BRS6vtXVZ4MyPUWzUg=", + "dev": true + }, + "typescript-simple": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typescript-simple/-/typescript-simple-1.0.3.tgz", + "integrity": "sha1-z+E+D12+ZJe8O/pZ/bkFDI39CH0=", + "dev": true, + "requires": { + "typescript": "1.4.1" + } + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.2" + } + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "requires": { + "extsprintf": "1.0.2" + } + }, + "which": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", + "integrity": "sha1-FVf5YIBgTlsRs1meufRbUKnv1yI=", + "requires": { + "is-absolute": "0.1.7", + "isexe": "1.1.2" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "wrap-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.0.0.tgz", + "integrity": "sha1-fTD4+HP5pbvDpk2ryNF34HGuQm8=", + "requires": { + "string-width": "1.0.1" + } + }, + "wrappy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "integrity": "sha1-HmWWmWXMvC20VIxrhKbyxa7dRzk=" + }, + "xmlbuilder": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz", + "integrity": "sha1-mLj2UcowqmJANvEn0RzGbce5B6M=", + "dev": true, + "requires": { + "lodash": "3.10.1" + } + }, + "xmldom": { + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.22.tgz", + "integrity": "sha1-EN5OXpZJgfA8jMcvrcCNFLbDqiY=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz", + "integrity": "sha1-MGxUODXwnuGkyyO3vOmrNByRzdQ=" + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.1", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } + } + } +} From b7a170c718aa6904a85b4269021670c45f814474 Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Fri, 8 Dec 2017 11:45:30 -0800 Subject: [PATCH 306/329] Added error messages to file rename. --- tools/auto-tester/src/Test.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 41c17f570f..c04dc078af 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -345,7 +345,21 @@ void Test::createTest() { QString newFilename = "ExpectedImage_" + QString::number(i-1).rightJustified(5, '0') + ".jpg"; QString fullNewFileName = pathToImageDirectory + "/" + newFilename; - imageDirectory.rename(fullCurrentFilename, newFilename); + if (!imageDirectory.rename(fullCurrentFilename, newFilename)) { + if (!QFile::exists(fullCurrentFilename)) { + messageBox.critical(0, "Error", "Could not rename file: " + fullCurrentFilename + " to: " + newFilename + "\n" + + fullCurrentFilename + " not found" + + "\nTest creation aborted" + ); + exit(-1); + } + else { + messageBox.critical(0, "Error", "Could not rename file: " + fullCurrentFilename + " to: " + newFilename + "\n" + + "unknown error" + "\nTest creation aborted" + ); + exit(-1); + } + } ++i; } } From aea9821c072be9b48b585ab63faaa343aa3491f3 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 8 Dec 2017 14:03:37 -0800 Subject: [PATCH 307/329] update to a newer version of electron-compilers --- server-console/package-lock.json | 5044 ++++++++++++++++++------------ server-console/package.json | 2 +- 2 files changed, 3047 insertions(+), 1999 deletions(-) diff --git a/server-console/package-lock.json b/server-console/package-lock.json index 1586716c97..6097627b2b 100644 --- a/server-console/package-lock.json +++ b/server-console/package-lock.json @@ -4,6 +4,47 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@paulcbetts/mime-db": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/@paulcbetts/mime-db/-/mime-db-1.22.4.tgz", + "integrity": "sha1-uP+OeAh6QJkpkPcC+NnGVJm+LvE=", + "dev": true + }, + "@paulcbetts/mime-types": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@paulcbetts/mime-types/-/mime-types-2.1.10.tgz", + "integrity": "sha1-iqUx8faPrICELnmu/4Z5fDCSJ90=", + "dev": true, + "requires": { + "@paulcbetts/mime-db": "1.22.4" + } + }, + "@paulcbetts/vueify": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/@paulcbetts/vueify/-/vueify-9.4.3.tgz", + "integrity": "sha1-NuLSO9fAGeit5I/IV/WjdkMeKlQ=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "convert-source-map": "1.5.1", + "cssnano": "3.10.0", + "hash-sum": "1.0.2", + "lru-cache": "4.0.1", + "object-assign": "4.0.1", + "source-map": "0.5.7", + "through": "2.3.8", + "vue-hot-reload-api": "2.2.4", + "vue-template-compiler": "2.5.9", + "vue-template-es2015-compiler": "1.6.0" + } + }, + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true, + "optional": true + }, "abbrev": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz", @@ -11,30 +52,47 @@ "dev": true }, "acorn": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", - "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", "dev": true }, + "acorn-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", + "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", + "dev": true, + "requires": { + "acorn": "2.7.0" + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "3.0.2", + "kind-of": "3.2.2", "longest": "1.0.1", - "repeat-string": "1.5.4" + "repeat-string": "1.6.1" } }, - "alter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", - "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=", - "dev": true, - "requires": { - "stable": "0.1.5" - } + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true }, "always-tail": { "version": "0.2.0", @@ -45,9 +103,9 @@ } }, "amdefine": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "integrity": "sha1-/RdHRwDLXMnCtwnwvp0jzjwZjDM=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { @@ -65,53 +123,25 @@ "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=" }, - "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.7" + "sprintf-js": "1.0.3" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.0.1" - } - }, - "arr-flatten": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz", - "integrity": "sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=", - "dev": true - }, "array-find-index": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz", "integrity": "sha1-C8Jd2slB7IpJauJY/UrBiAA+868=", "dev": true }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, "asap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.3.tgz", - "integrity": "sha1-H8HRVk7hFiDfym1nAphQkT+fRnk=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz", + "integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0=", "dev": true }, "asar": { @@ -154,28 +184,31 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" }, - "ast-traverse": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz", - "integrity": "sha1-ac8rg4bxnc2hux4F1o/jWdiJfeY=", - "dev": true - }, - "ast-types": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.12.tgz", - "integrity": "sha1-oNkOQ1G7iHcWyD/WN+v4GK9K38w=", - "dev": true - }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, - "async-each": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.0.tgz", - "integrity": "sha1-tTGSJsKdmSd99jyK7gQJOqXx058=", - "dev": true + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000780", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } }, "aws-sign2": { "version": "0.6.0", @@ -190,215 +223,768 @@ "lru-cache": "4.0.1" } }, - "babel": { - "version": "5.8.38", - "resolved": "https://registry.npmjs.org/babel/-/babel-5.8.38.tgz", - "integrity": "sha1-37CHwiiUkXxXb7Z86c8yjUWGKfs=", + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "babel-core": "5.8.38", - "chokidar": "1.4.3", - "commander": "2.9.0", - "convert-source-map": "1.2.0", - "fs-readdir-recursive": "0.1.2", - "glob": "5.0.15", - "lodash": "3.10.1", - "output-file-sync": "1.1.1", - "path-exists": "1.0.0", - "path-is-absolute": "1.0.0", - "slash": "1.0.0", - "source-map": "0.5.3" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.4", - "inherits": "2.0.1", - "minimatch": "3.0.0", - "once": "1.3.3", - "path-is-absolute": "1.0.0" - } - } + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, "babel-core": { - "version": "5.8.38", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.38.tgz", - "integrity": "sha1-H8ruedfmG3ULALjlT238nQr4ZVg=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { - "babel-plugin-constant-folding": "1.0.1", - "babel-plugin-dead-code-elimination": "1.0.2", - "babel-plugin-eval": "1.0.1", - "babel-plugin-inline-environment-variables": "1.0.1", - "babel-plugin-jscript": "1.0.4", - "babel-plugin-member-expression-literals": "1.0.1", - "babel-plugin-property-literals": "1.0.1", - "babel-plugin-proto-to-assign": "1.0.4", - "babel-plugin-react-constant-elements": "1.0.3", - "babel-plugin-react-display-name": "1.0.3", - "babel-plugin-remove-console": "1.0.1", - "babel-plugin-remove-debugger": "1.0.1", - "babel-plugin-runtime": "1.0.7", - "babel-plugin-undeclared-variables-check": "1.0.2", - "babel-plugin-undefined-to-void": "1.1.6", - "babylon": "5.8.38", - "bluebird": "2.10.2", - "chalk": "1.1.3", - "convert-source-map": "1.2.0", - "core-js": "1.2.6", - "debug": "2.2.0", - "detect-indent": "3.0.1", - "esutils": "2.0.2", - "fs-readdir-recursive": "0.1.2", - "globals": "6.4.1", - "home-or-tmp": "1.0.0", - "is-integer": "1.0.6", - "js-tokens": "1.0.1", - "json5": "0.4.0", - "lodash": "3.10.1", - "minimatch": "2.0.10", - "output-file-sync": "1.1.1", - "path-exists": "1.0.0", - "path-is-absolute": "1.0.0", - "private": "0.1.6", - "regenerator": "0.8.40", - "regexpu": "1.3.0", - "repeating": "1.1.3", - "resolve": "1.1.7", - "shebang-regex": "1.0.0", + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", "slash": "1.0.0", - "source-map": "0.5.3", - "source-map-support": "0.2.10", - "to-fast-properties": "1.0.2", - "trim-right": "1.0.1", - "try-resolve": "1.0.1" + "source-map": "0.5.7" }, "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { - "ms": "0.7.1" + "balanced-match": "1.0.0", + "concat-map": "0.0.1" } }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "brace-expansion": "1.1.3" + "ms": "2.0.0" } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true } } }, - "babel-plugin-constant-folding": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz", - "integrity": "sha1-g2HTZMmORJw2kr26Ue/whEKQqo4=", - "dev": true - }, - "babel-plugin-dead-code-elimination": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz", - "integrity": "sha1-X3xFEnTc18zNv7s+C4XdKBIfD2U=", - "dev": true - }, - "babel-plugin-eval": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz", - "integrity": "sha1-ovrtJc5r5preS/7CY/cBaRlZUNo=", - "dev": true - }, - "babel-plugin-inline-environment-variables": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz", - "integrity": "sha1-H1jOkSB61qgmqL9kX6/mj/X+P/4=", - "dev": true - }, - "babel-plugin-jscript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz", - "integrity": "sha1-jzQsOCduh6R9X6CovT1etsytj8w=", - "dev": true - }, - "babel-plugin-member-expression-literals": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz", - "integrity": "sha1-zF7bD6qNyScXDnTW0cAkQAIWJNM=", - "dev": true - }, - "babel-plugin-property-literals": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz", - "integrity": "sha1-AlIwGQAZKYCxwRjv6kjOk6q4MzY=", - "dev": true - }, - "babel-plugin-proto-to-assign": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/babel-plugin-proto-to-assign/-/babel-plugin-proto-to-assign-1.0.4.tgz", - "integrity": "sha1-xJ56/QL1d7xNoF6i3wAiUM980SM=", + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { - "lodash": "3.10.1" + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + } } }, - "babel-plugin-react-constant-elements": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz", - "integrity": "sha1-lGc26DeEKcvDSdz/YvUcFDs041o=", - "dev": true - }, - "babel-plugin-react-display-name": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz", - "integrity": "sha1-dU/jiSboQkpOexWrbqYTne4FFPw=", - "dev": true - }, - "babel-plugin-remove-console": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz", - "integrity": "sha1-2PJFVsOgUAXUKqqv0neH9T/wE6c=", - "dev": true - }, - "babel-plugin-remove-debugger": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz", - "integrity": "sha1-/S6jzWGkKK0fO5yJiC/0KT6MFMc=", - "dev": true - }, - "babel-plugin-runtime": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/babel-plugin-runtime/-/babel-plugin-runtime-1.0.7.tgz", - "integrity": "sha1-v3x9lm3Vbs1cF/ocslPJrLflSq8=", - "dev": true - }, - "babel-plugin-undeclared-variables-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", - "integrity": "sha1-XPGqU52BP/ZOmWQSkK9iCWX2Xe4=", + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", "dev": true, "requires": { - "leven": "1.0.2" + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, - "babel-plugin-undefined-to-void": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz", - "integrity": "sha1-f1eO+LeN+uYAM4XYQXph7aBuL4E=", + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + } + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + } + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", "dev": true }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + } + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.10.0", + "invariant": "2.2.2", + "semver": "5.4.1" + }, + "dependencies": { + "browserslist": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.10.0.tgz", + "integrity": "sha512-WyvzSLsuAVPOjbljXnyeWl14Ae+ukAT8MUuagKVzIDvwBxl4UAwD1xqtyQs2eWYPGUKMeC3Ol62goqYuKqTTcw==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000780", + "electron-to-chromium": "1.3.28" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + }, + "dependencies": { + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + } + } + }, "babylon": { - "version": "5.8.38", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz", - "integrity": "sha1-7JsSCxG/bM1Bc6GL8hfmC3mFn/0=", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { @@ -422,12 +1008,6 @@ "chainsaw": "0.1.0" } }, - "binary-extensions": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.4.0.tgz", - "integrity": "sha1-1zPMtiiYbXsybYhlbg3b06rDUbc=", - "dev": true - }, "bl": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", @@ -484,29 +1064,28 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.3.tgz", - "integrity": "sha1-NdTn3aYysz4hXTioqc9DKcnHXSw=", + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "expand-range": "1.8.1", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "caniuse-db": "1.0.30000780", + "electron-to-chromium": "1.3.28" } }, - "breakable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz", - "integrity": "sha1-eEp5eRWjjq0nutRWtVcstLuqeME=", - "dev": true - }, "btoa": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.1.2.tgz", "integrity": "sha1-PkC4FmP4HS3WWWpMtxSo3BbPq+A=", "dev": true }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, "buffers": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", @@ -534,6 +1113,30 @@ "map-obj": "1.0.1" } }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000780", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + } + }, + "caniuse-db": { + "version": "1.0.30000780", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000780.tgz", + "integrity": "sha1-jRl3Vh0A/w8O0ra2YUAyirRQTAo=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000780", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000780.tgz", + "integrity": "sha1-H5CV8u/UlA4LpsWZKreptkzDW6Q=", + "dev": true + }, "cardinal": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-0.5.0.tgz", @@ -555,7 +1158,7 @@ "dev": true, "requires": { "align-text": "0.1.4", - "lazy-cache": "1.0.3" + "lazy-cache": "1.0.4" } }, "chainsaw": { @@ -579,6 +1182,12 @@ "supports-color": "2.0.0" } }, + "character-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz", + "integrity": "sha1-wN3kqxgnE7kZuXCVmhI+zBow/NY=", + "dev": true + }, "cheerio": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz", @@ -591,29 +1200,51 @@ "lodash": "3.10.1" } }, - "chokidar": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.4.3.tgz", - "integrity": "sha1-X+czpNmsrqUbJkVLfllVkWPQ27I=", - "dev": true, - "requires": { - "anymatch": "1.3.0", - "async-each": "1.0.0", - "fsevents": "1.0.11", - "glob-parent": "2.0.0", - "inherits": "2.0.1", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.0", - "readdirp": "2.0.0" - } - }, "chromium-pickle-js": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.1.0.tgz", "integrity": "sha1-HUixB9ghJqLz4hHC6iX4A7pVGyE=", "dev": true }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "clean-css": { + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "dev": true, + "requires": { + "commander": "2.8.1", + "source-map": "0.4.4" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, "cli-table": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", @@ -649,6 +1280,28 @@ "wrap-ansi": "2.0.0" } }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "optional": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "1.4.1" + } + }, "code-point-at": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", @@ -658,11 +1311,57 @@ } }, "coffee-script": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", - "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=", + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", + "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", "dev": true }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } + }, "colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", @@ -684,38 +1383,6 @@ "graceful-readlink": "1.0.1" } }, - "commoner": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.4.tgz", - "integrity": "sha1-mPMzPdOtOZWWuy04Sng7tyE9aPg=", - "dev": true, - "requires": { - "commander": "2.9.0", - "detective": "4.3.1", - "glob": "5.0.15", - "graceful-fs": "4.1.3", - "iconv-lite": "0.4.13", - "mkdirp": "0.5.1", - "private": "0.1.6", - "q": "1.4.1", - "recast": "0.10.33" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.4", - "inherits": "2.0.1", - "minimatch": "3.0.0", - "once": "1.3.3", - "path-is-absolute": "1.0.0" - } - } - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -754,16 +1421,25 @@ } } }, + "constantinople": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz", + "integrity": "sha1-S5RdmTeQe82Y7ldRIsOBdRZUQUE=", + "dev": true, + "requires": { + "acorn": "2.7.0" + } + }, "convert-source-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.2.0.tgz", - "integrity": "sha1-RMCMJQbxD7PKb9iI1aNETPjWpmk=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "core-js": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz", - "integrity": "sha1-4jUfbK52T4w05dg5rLamDO+LSkU=", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", "dev": true }, "core-util-is": { @@ -779,6 +1455,50 @@ "boom": "2.10.1" } }, + "cson": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/cson/-/cson-3.0.2.tgz", + "integrity": "sha1-g+6Qids8JUvsHpjkmNmqzxGtzFQ=", + "dev": true, + "requires": { + "coffee-script": "1.12.7", + "cson-parser": "1.3.5", + "extract-opts": "3.3.1", + "requirefresh": "2.1.0", + "safefs": "4.1.0" + } + }, + "cson-parser": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-1.3.5.tgz", + "integrity": "sha1-fsZ14DkUVTO/KmqFYHPxWZ2cLSQ=", + "dev": true, + "requires": { + "coffee-script": "1.12.7" + } + }, + "css": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", + "integrity": "sha1-k4aBHKgrzMnuf7WnMrHioxfIo+c=", + "dev": true, + "requires": { + "css-parse": "1.0.4", + "css-stringify": "1.0.5" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", + "integrity": "sha1-OLBQP7+dqfVOnB29pg4UXHcRe90=", + "dev": true + }, "css-select": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz", @@ -790,11 +1510,83 @@ "nth-check": "1.0.1" } }, + "css-stringify": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", + "integrity": "sha1-sNBClG2ylTu50pKQCmy19tASIDE=", + "dev": true + }, "css-what": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz", "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w=" }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.0.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "optional": true, + "requires": { + "cssom": "0.3.2" + } + }, "ctype": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", @@ -822,6 +1614,12 @@ } } }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, "debug": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", @@ -853,95 +1651,116 @@ "integrity": "sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=", "dev": true }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", "dev": true }, - "defs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.1.tgz", - "integrity": "sha1-siYJ8sehG6ej2xFoBcE5scr/qdI=", - "dev": true, - "requires": { - "alter": "0.2.0", - "ast-traverse": "0.1.1", - "breakable": "1.0.0", - "esprima-fb": "15001.1001.0-dev-harmony-fb", - "simple-fmt": "0.1.0", - "simple-is": "0.2.0", - "stringmap": "0.2.2", - "stringset": "0.2.1", - "tryor": "0.1.2", - "yargs": "3.27.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "esprima-fb": { - "version": "15001.1001.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", - "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=", - "dev": true - }, - "yargs": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz", - "integrity": "sha1-ISBUaTFuk5Ex1Z8toMbX+YIh6kA=", - "dev": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "window-size": "0.1.4", - "y18n": "3.2.1" - } - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "detect-indent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", - "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "minimist": "1.2.0", - "repeating": "1.1.3" + "repeating": "2.0.1" } }, - "detective": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.3.1.tgz", - "integrity": "sha1-n7Bt0e6PDqTbzGB82jnZzh1Pcm8=", + "detective-less": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detective-less/-/detective-less-1.0.0.tgz", + "integrity": "sha1-Qmx4yatuMnW/ZsyRq6wAU7tFLX0=", "dev": true, "requires": { - "acorn": "1.2.2", - "defined": "1.0.0" + "debug": "2.2.0", + "gonzales-pe": "3.4.7", + "node-source-walk": "3.3.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + } } }, + "detective-sass": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detective-sass/-/detective-sass-2.0.1.tgz", + "integrity": "sha1-BWYKoblc/Yf1dGQ7+s4+iiaBEqE=", + "dev": true, + "requires": { + "debug": "3.1.0", + "gonzales-pe": "3.4.7", + "node-source-walk": "3.3.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "detective-scss": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/detective-scss/-/detective-scss-1.0.1.tgz", + "integrity": "sha1-dDJGoN01jZ2R/0ElQX9qd/vPJw8=", + "dev": true, + "requires": { + "debug": "3.1.0", + "gonzales-pe": "3.4.7", + "node-source-walk": "3.3.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "detective-stylus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detective-stylus/-/detective-stylus-1.0.0.tgz", + "integrity": "sha1-UK7n24uruZA4HwEMY/q7pbWOVM0=", + "dev": true + }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", @@ -979,6 +1798,16 @@ "domelementtype": "1.3.0" } }, + "eachr": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eachr/-/eachr-3.2.0.tgz", + "integrity": "sha1-LDXkPqCGUW95l8+At6pk1VpKRIQ=", + "dev": true, + "requires": { + "editions": "1.3.3", + "typechecker": "4.4.1" + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -988,35 +1817,170 @@ "jsbn": "0.1.0" } }, - "electron-compile-cache": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/electron-compile-cache/-/electron-compile-cache-0.7.3.tgz", - "integrity": "sha1-sJqH0zknCJmsSXyDL0DZasp2u9s=", - "dev": true, - "requires": { - "lodash": "3.10.1", - "mkdirp": "0.5.1" - } + "editions": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.3.tgz", + "integrity": "sha1-CQcQG92iD6w8vjNMJ8vQaI3Jmls=", + "dev": true }, "electron-compilers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/electron-compilers/-/electron-compilers-1.0.1.tgz", - "integrity": "sha1-jlPUUj97gVgb7ylmefiWISx4xHI=", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/electron-compilers/-/electron-compilers-5.9.0.tgz", + "integrity": "sha1-lT3BTiT7FbN9XpDeLDnXU/P4FA4=", "dev": true, "requires": { - "babel": "5.8.38", - "babel-core": "5.8.38", + "@paulcbetts/mime-types": "2.1.10", + "@paulcbetts/vueify": "9.4.3", + "babel-core": "6.26.0", + "babel-preset-env": "1.6.1", "btoa": "1.1.2", - "cheerio": "0.19.0", - "coffee-script": "1.10.0", - "electron-compile-cache": "0.7.3", - "less": "2.6.1", - "lodash": "3.10.1", + "cheerio": "0.20.0", + "coffee-script": "1.12.7", + "cson": "3.0.2", + "debug": "2.6.9", + "detective-less": "1.0.0", + "detective-sass": "2.0.1", + "detective-scss": "1.0.1", + "detective-stylus": "1.0.0", + "graphql": "0.9.6", + "graphql-tag": "2.6.0", + "istanbul": "0.4.5", + "jade": "1.11.0", + "js-string-escape": "1.0.1", + "less": "2.7.3", "mkdirp": "0.5.1", - "ncp": "2.0.0", - "promise": "7.1.1", - "rimraf": "2.5.2", - "typescript-simple": "1.0.3" + "nib": "1.1.2", + "resolve": "1.5.0", + "rimraf": "2.6.2", + "sass-lookup": "1.1.0", + "sass.js": "0.10.7", + "sorcery": "0.10.0", + "stylus": "0.54.5", + "stylus-lookup": "1.0.2", + "toutsuite": "0.6.0", + "typescript": "2.6.2" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "cheerio": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", + "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.8.3", + "jsdom": "7.2.2", + "lodash": "4.17.4" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.4", + "inherits": "2.0.1", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + } } }, "electron-download": { @@ -1095,6 +2059,12 @@ "extract-zip": "1.5.0" } }, + "electron-to-chromium": { + "version": "1.3.28", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz", + "integrity": "sha1-jdTmRYCGZE6fnwoc8y4qH53/2e4=", + "dev": true + }, "end-of-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", @@ -1127,52 +2097,72 @@ "is-arrayish": "0.2.1" } }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "optional": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true, + "optional": true + } + } + }, "esprima-fb": { "version": "12001.1.0-dev-harmony-fb", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-12001.1.0-dev-harmony-fb.tgz", "integrity": "sha1-2EQAOEupXOJnjGF60kp/QICNqRU=" }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true, + "optional": true + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", - "integrity": "sha1-rL1j5W79kTlyK3VfCZudtawfM/Y=", - "dev": true, - "requires": { - "fill-range": "2.2.3" - } - }, "extend": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "extract-opts": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/extract-opts/-/extract-opts-3.3.1.tgz", + "integrity": "sha1-WrvtyYwNUgLjJ4cn+Rktfghsa+E=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "eachr": "3.2.0", + "editions": "1.3.3", + "typechecker": "4.4.1" } }, "extract-zip": { @@ -1209,6 +2199,12 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "fd-slicer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", @@ -1218,25 +2214,6 @@ "pend": "1.2.0" } }, - "filename-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz", - "integrity": "sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=", - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.0.0", - "randomatic": "1.1.5", - "repeat-element": "1.1.2", - "repeat-string": "1.5.4" - } - }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -1258,21 +2235,12 @@ } } }, - "for-in": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.5.tgz", - "integrity": "sha1-AHN04rbVxnQgoUeb23WgSHK3OMQ=", + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", "dev": true }, - "for-own": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.4.tgz", - "integrity": "sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=", - "dev": true, - "requires": { - "for-in": "0.1.5" - } - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -1300,1095 +2268,17 @@ "rimraf": "2.5.2" } }, - "fs-readdir-recursive": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz", - "integrity": "sha1-MVtPuMHKW4xH3v7zGdBz2tNWgFk=", + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.11.tgz", - "integrity": "sha1-MD1AUeQRqVp60Yfm+Mz/6TbKeKw=", - "dev": true, - "optional": true, - "requires": { - "nan": "2.2.1", - "node-pre-gyp": "0.6.25" - }, - "dependencies": { - "ansi": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", - "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", - "dev": true - }, - "ansi-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", - "integrity": "sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=", - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.0.6" - } - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.3.2.tgz", - "integrity": "sha1-054L7kEs7Q6O2Uoj4xTzE6lbn9E=", - "dev": true, - "optional": true, - "requires": { - "lru-cache": "4.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz", - "integrity": "sha1-E0OVXtry432bnn7nJB4nxLn7cr4=", - "dev": true, - "optional": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.0.0" - }, - "dependencies": { - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true, - "optional": true - }, - "yallist": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz", - "integrity": "sha1-MGxUODXwnuGkyyO3vOmrNByRzdQ=", - "dev": true, - "optional": true - } - } - } - } - }, - "bl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", - "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=", - "dev": true, - "optional": true, - "requires": { - "readable-stream": "2.0.6" - } - }, - "block-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz", - "integrity": "sha1-Boj0baK7+c/wxPaCJaDLlcvopGs=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true, - "optional": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "optional": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.13.0.tgz", - "integrity": "sha1-parm/Z2OFWYk6w3ZJZ6xK6JFOFo=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "optional": true, - "requires": { - "ms": "0.7.1" - } - }, - "deep-extend": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", - "integrity": "sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=", - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "optional": true - }, - "extend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=", - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true - }, - "form-data": { - "version": "1.0.0-rc4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", - "integrity": "sha1-BaxrwiIntD5EYfSIFhVUaZ1Pi14=", - "dev": true, - "optional": true, - "requires": { - "async": "1.5.2", - "combined-stream": "1.0.5", - "mime-types": "2.1.10" - } - }, - "fstream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.8.tgz", - "integrity": "sha1-fo16c6uzZH7zbkuKFcqAHboD0Dg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.3", - "inherits": "2.0.1", - "mkdirp": "0.5.1", - "rimraf": "2.5.2" - } - }, - "fstream-ignore": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.3.tgz", - "integrity": "sha1-THTZH6iLIrQvT4ahiigg3XnY/N0=", - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.8", - "inherits": "2.0.1", - "minimatch": "3.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", - "integrity": "sha1-UjYVelHk8ATBd/s8Un/33Xjw74M=", - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "1.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz", - "integrity": "sha1-Rr/1ARXUf8mriYVKu4fZgHihCZE=", - "dev": true, - "optional": true, - "requires": { - "balanced-match": "0.3.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz", - "integrity": "sha1-qRzdHr7xqGZZ5w/03vAWJfwtZ1Y=", - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "optional": true - } - } - } - } - } - } - }, - "gauge": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", - "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", - "dev": true, - "optional": true, - "requires": { - "ansi": "0.3.1", - "has-unicode": "2.0.0", - "lodash.pad": "4.1.0", - "lodash.padend": "4.2.0", - "lodash.padstart": "4.2.0" - } - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true, - "optional": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "optional": true, - "requires": { - "is-property": "1.0.2" - } - }, - "graceful-fs": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz", - "integrity": "sha1-kgM84RETxB4mKNYf36QLwQ3AFVw=", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true, - "optional": true - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true, - "optional": true, - "requires": { - "chalk": "1.1.3", - "commander": "2.9.0", - "is-my-json-valid": "2.13.1", - "pinkie-promise": "2.0.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "2.0.0" - } - }, - "has-unicode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.0.tgz", - "integrity": "sha1-o82Wwwe6QdVZxaLuQIwSoRxMLsM=", - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.2.2", - "sshpk": "1.7.4" - } - }, - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "dev": true, - "optional": true - }, - "is-my-json-valid": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "integrity": "sha1-1Vd4qC/rawlj/0vhEdXRaE6JBwc=", - "dev": true, - "optional": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "2.0.0", - "xtend": "4.0.1" - } - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true, - "optional": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.0" - } - }, - "jsbn": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", - "integrity": "sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=", - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", - "integrity": "sha1-UDVPGfYDkXxpX3C4Wvp3w7DyNQY=", - "dev": true, - "optional": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true - }, - "jsonpointer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", - "integrity": "sha1-OvHdIP6FRjkQ1GmjheMwF9KgMNk=", - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz", - "integrity": "sha1-8gyQaskqvVjjt5rIvHCkiDJRLaE=", - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2", - "json-schema": "0.2.2", - "verror": "1.3.6" - } - }, - "lodash.pad": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.1.0.tgz", - "integrity": "sha1-2746loH8y2mXBHOiJj9QwZasOqk=", - "dev": true, - "optional": true, - "requires": { - "lodash.repeat": "4.0.0", - "lodash.tostring": "4.1.2" - } - }, - "lodash.padend": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.2.0.tgz", - "integrity": "sha1-uE6MNAHUU4BVxuMhpR467hmIGhg=", - "dev": true, - "optional": true, - "requires": { - "lodash.repeat": "4.0.0", - "lodash.tostring": "4.1.2" - } - }, - "lodash.padstart": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.2.0.tgz", - "integrity": "sha1-42+J/Ww7UHIhkIdpW3Zd6D7JaYU=", - "dev": true, - "optional": true, - "requires": { - "lodash.repeat": "4.0.0", - "lodash.tostring": "4.1.2" - } - }, - "lodash.repeat": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.0.0.tgz", - "integrity": "sha1-qvVwsqsL+w3abW6TKR1UswsffSI=", - "dev": true, - "requires": { - "lodash.tostring": "4.1.2" - } - }, - "lodash.tostring": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.tostring/-/lodash.tostring-4.1.2.tgz", - "integrity": "sha1-fTJqXPZNpCmPL9NbaI2EgmdTUog=", - "dev": true - }, - "mime-db": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.22.0.tgz", - "integrity": "sha1-qyOmNy3J2G09yRIb0OvTgQWhkEo=", - "dev": true - }, - "mime-types": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.10.tgz", - "integrity": "sha1-uTx8tDYuFtQQcqflRTj7TUMHCDc=", - "dev": true, - "requires": { - "mime-db": "1.22.0" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.25", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.25.tgz", - "integrity": "sha1-LGgYd15vHfXjU7qAJPHAEYcmVFs=", - "dev": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "2.0.3", - "rc": "1.1.6", - "request": "2.69.0", - "rimraf": "2.5.2", - "semver": "5.1.0", - "tar": "2.2.1", - "tar-pack": "3.1.3" - }, - "dependencies": { - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.0.7" - }, - "dependencies": { - "abbrev": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz", - "integrity": "sha1-W2A1su6dT7XPhZ8Iqb6BsghJGEM=", - "dev": true, - "optional": true - } - } - } - } - }, - "node-uuid": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "integrity": "sha1-baWhdmjEs91ZYjvaEc9/pMH2Cm8=", - "dev": true, - "optional": true - }, - "npmlog": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.3.tgz", - "integrity": "sha1-Ag+ZNR8MAuOZxnS6JW58TTs90pg=", - "dev": true, - "optional": true, - "requires": { - "ansi": "0.3.1", - "are-we-there-yet": "1.1.2", - "gauge": "1.2.7" - } - }, - "oauth-sign": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.1.tgz", - "integrity": "sha1-GCQ5vbkTeL90YOdcZOpD5kSN7wY=", - "dev": true, - "optional": true - }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "optional": true, - "requires": { - "wrappy": "1.0.1" - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, - "optional": true - }, - "pinkie-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz", - "integrity": "sha1-TINTjeH25mDCngoTRGhE96foglk=", - "dev": true, - "optional": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "process-nextick-args": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.6.tgz", - "integrity": "sha1-D5awAc6pCxJZLOVm7bl+wR5pvQU=", - "dev": true - }, - "qs": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.0.2.tgz", - "integrity": "sha1-iMaNWQ6O1Wx2x581LBe5gkZqv80=", - "dev": true, - "optional": true - }, - "rc": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "integrity": "sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=", - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.4.1", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "1.0.4" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.1", - "isarray": "1.0.0", - "process-nextick-args": "1.0.6", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.69.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.69.0.tgz", - "integrity": "sha1-z5HS4AB1KxIXFVwAUkGRGZGiNGo=", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.3.2", - "bl": "1.0.3", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.0", - "forever-agent": "0.6.1", - "form-data": "1.0.0-rc4", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.10", - "node-uuid": "1.4.7", - "oauth-sign": "0.8.1", - "qs": "6.0.2", - "stringstream": "0.0.5", - "tough-cookie": "2.2.2", - "tunnel-agent": "0.4.2" - } - }, - "rimraf": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.2.tgz", - "integrity": "sha1-YrqUf6TAtDY4Oa7+zU8PutYFlyY=", - "dev": true, - "requires": { - "glob": "7.0.3" - }, - "dependencies": { - "glob": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.3.tgz", - "integrity": "sha1-CqI1kxpKlqwT1g/6wvuHe9btT1g=", - "dev": true, - "requires": { - "inflight": "1.0.4", - "inherits": "2.0.1", - "minimatch": "3.0.0", - "once": "1.3.3", - "path-is-absolute": "1.0.0" - }, - "dependencies": { - "inflight": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "integrity": "sha1-bLtFIevVHODsCpNr/XZX736bFyo=", - "dev": true, - "requires": { - "once": "1.3.3", - "wrappy": "1.0.1" - }, - "dependencies": { - "wrappy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "integrity": "sha1-HmWWmWXMvC20VIxrhKbyxa7dRzk=", - "dev": true - } - } - }, - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "minimatch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", - "integrity": "sha1-UjYVelHk8ATBd/s8Un/33Xjw74M=", - "dev": true, - "requires": { - "brace-expansion": "1.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz", - "integrity": "sha1-Rr/1ARXUf8mriYVKu4fZgHihCZE=", - "dev": true, - "requires": { - "balanced-match": "0.3.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz", - "integrity": "sha1-qRzdHr7xqGZZ5w/03vAWJfwtZ1Y=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - } - } - } - } - }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1.0.1" - }, - "dependencies": { - "wrappy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "integrity": "sha1-HmWWmWXMvC20VIxrhKbyxa7dRzk=", - "dev": true - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "integrity": "sha1-Jj2tpmqz8vsQv3+dJN2PPlcO+RI=", - "dev": true - } - } - } - } - }, - "semver": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", - "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=", - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.4.tgz", - "integrity": "sha1-rXtH3vymHIQV2WQkO2KwzmD7yjg=", - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "0.2.0", - "dashdash": "1.13.0", - "ecc-jsbn": "0.1.1", - "jodid25519": "1.0.2", - "jsbn": "0.1.0", - "tweetnacl": "0.14.3" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "2.0.0" - } - }, - "strip-json-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", - "dev": true, - "optional": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "0.0.8", - "fstream": "1.0.8", - "inherits": "2.0.1" - } - }, - "tar-pack": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.3.tgz", - "integrity": "sha1-YRt+YusvJ67aZFVPen+0iQDH4Vc=", - "dev": true, - "optional": true, - "requires": { - "debug": "2.2.0", - "fstream": "1.0.8", - "fstream-ignore": "1.0.3", - "once": "1.3.3", - "readable-stream": "2.0.6", - "rimraf": "2.5.2", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", - "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=", - "dev": true, - "optional": true - }, - "tunnel-agent": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz", - "integrity": "sha1-EQTj82rIcSXChycAZ9WC0YEzv+4=", - "dev": true, - "optional": true - }, - "tweetnacl": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz", - "integrity": "sha1-PaOC9nDyXe1417PReSEZvKC3Ey0=", - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "integrity": "sha1-HmWWmWXMvC20VIxrhKbyxa7dRzk=", - "dev": true, - "optional": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true, - "optional": true - } - } + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "generate-function": { "version": "2.0.0", @@ -2440,31 +2330,29 @@ "path-is-absolute": "1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, "globals": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz", - "integrity": "sha1-hJgDKzttHMge68X3lpDY/in6v08=", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, + "gonzales-pe": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-3.4.7.tgz", + "integrity": "sha1-F8e+Z61sr/Ynej44esc26YPSgOw=", + "dev": true, + "requires": { + "minimist": "1.1.3" + }, + "dependencies": { + "minimist": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", + "dev": true + } + } + }, "graceful-fs": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz", @@ -2475,11 +2363,56 @@ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" }, + "graphql": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.9.6.tgz", + "integrity": "sha1-UUQh6dIlwp38j9MFRZq65YgV7yw=", + "dev": true, + "requires": { + "iterall": "1.1.3" + } + }, + "graphql-tag": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.6.0.tgz", + "integrity": "sha1-D7G59tZlEmPEejQg6CeRDm/tOVI=", + "dev": true + }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true, + "optional": true + }, "har-validator": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", @@ -2491,6 +2424,15 @@ "pinkie-promise": "2.0.1" } }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -2499,6 +2441,18 @@ "ansi-regex": "2.0.0" } }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", @@ -2510,19 +2464,25 @@ "sntp": "1.0.9" } }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" }, "home-or-tmp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", - "integrity": "sha1-S58eQIAMPlDGwn94FnavzOcfOYU=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { - "os-tmpdir": "1.0.1", - "user-home": "1.1.1" + "os-homedir": "1.0.1", + "os-tmpdir": "1.0.2" } }, "home-path": { @@ -2537,6 +2497,12 @@ "integrity": "sha1-2elTsmmIvogJbEbpJklNlgTDAPg=", "dev": true }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, "htmlparser2": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", @@ -2575,16 +2541,10 @@ "sshpk": "1.7.4" } }, - "iconv-lite": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", - "dev": true - }, "image-size": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.4.0.tgz", - "integrity": "sha1-1LTh9hlS5MvBzqmmsMkV/stwdRA=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", "dev": true, "optional": true }, @@ -2608,6 +2568,12 @@ } } }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, "inflight": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", @@ -2628,6 +2594,15 @@ "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "dev": true }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -2641,25 +2616,22 @@ "is-relative": "0.1.3" } }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "1.4.0" - } - }, "is-buffer": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz", - "integrity": "sha1-24l/w/esotUN6UtsjCiWpHcWJ68=", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { @@ -2671,33 +2643,6 @@ "builtin-modules": "1.1.1" } }, - "is-dotfile": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz", - "integrity": "sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, "is-finite": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", @@ -2715,24 +2660,6 @@ "number-is-nan": "1.0.0" } }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-integer": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz", - "integrity": "sha1-UnOBn62ogNEj4awAqTjnFy3Y2V4=", - "dev": true, - "requires": { - "is-finite": "1.0.1" - } - }, "is-my-json-valid": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", @@ -2744,25 +2671,16 @@ "xtend": "4.0.1" } }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.0.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, "is-property": { @@ -2775,6 +2693,21 @@ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=" }, + "is-relative-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-relative-path/-/is-relative-path-1.0.2.tgz", + "integrity": "sha1-CRtGoNZ8HtD+hfH4z93gBrslHUY=", + "dev": true + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "1.1.1" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -2796,20 +2729,124 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=" }, - "isobject": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.0.0.tgz", - "integrity": "sha1-II3ocr1zeMKpKvlCij9W65GhIsQ=", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.7", + "async": "1.5.2", + "escodegen": "1.8.1", + "esprima": "2.7.3", + "glob": "5.0.15", + "handlebars": "4.0.11", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "once": "1.3.3", + "resolve": "1.1.7", + "supports-color": "3.2.3", + "which": "1.2.4", + "wordwrap": "1.0.0" + }, + "dependencies": { + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "2.7.3", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.2.0" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.4", + "inherits": "2.0.1", + "minimatch": "3.0.0", + "once": "1.3.3", + "path-is-absolute": "1.0.0" + } + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": "1.0.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "iterall": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.3.tgz", + "integrity": "sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ==", + "dev": true + }, + "jade": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz", + "integrity": "sha1-nIDlOMEtP7lcjZu5VZ+gzAQEBf0=", + "dev": true, + "requires": { + "character-parser": "1.2.1", + "clean-css": "3.4.28", + "commander": "2.6.0", + "constantinople": "3.0.2", + "jstransformer": "0.0.2", + "mkdirp": "0.5.1", + "transformers": "2.1.0", + "uglify-js": "2.8.29", + "void-elements": "2.0.1", + "with": "4.0.3" + }, + "dependencies": { + "commander": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", + "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", + "dev": true + } + } + }, "jodid25519": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", @@ -2819,22 +2856,76 @@ "jsbn": "0.1.0" } }, - "js-tokens": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz", - "integrity": "sha1-zENaXIuUrRWst5gxQPyAGCyJrq4=", + "js-base64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", + "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==", "dev": true }, + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + } + } + }, "jsbn": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", "integrity": "sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=", "optional": true }, + "jsdom": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", + "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", + "dev": true, + "optional": true, + "requires": { + "abab": "1.0.4", + "acorn": "2.7.0", + "acorn-globals": "1.0.9", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.9.0", + "nwmatcher": "1.4.3", + "parse5": "1.5.1", + "request": "2.71.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.2.2", + "webidl-conversions": "2.0.1", + "whatwg-url-compat": "0.6.5", + "xml-name-validator": "2.0.1" + } + }, "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "json-schema": { @@ -2842,15 +2933,25 @@ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", "integrity": "sha1-UDVPGfYDkXxpX3C4Wvp3w7DyNQY=" }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", - "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, "jsonfile": { @@ -2858,6 +2959,13 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.2.3.tgz", "integrity": "sha1-4lK5mmr5AdPsQfMyWJyQUJp7xgU=" }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "optional": true + }, "jsonpointer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", @@ -2873,13 +2981,23 @@ "verror": "1.3.6" } }, - "kind-of": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.2.tgz", - "integrity": "sha1-GH20JwRufpCUVpLmdoZovWkA3qA=", + "jstransformer": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-0.0.2.tgz", + "integrity": "sha1-eq4pqQPRls+glz2IXT5HlH7Ndqs=", "dev": true, "requires": { - "is-buffer": "1.1.3" + "is-promise": "2.1.0", + "promise": "6.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" } }, "klaw": { @@ -2888,9 +3006,9 @@ "integrity": "sha1-faM8a0L5s9yc7ADRfxOvAX/MJyE=" }, "lazy-cache": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.3.tgz", - "integrity": "sha1-6XdUYY+ciGu5mbL/aceLgkU9ZnQ=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true }, "lcid": { @@ -2902,26 +3020,163 @@ } }, "less": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/less/-/less-2.6.1.tgz", - "integrity": "sha1-ZY4B7JrDFJlZxrbfvPvAoXCv2no=", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", + "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", "dev": true, "requires": { "errno": "0.1.4", "graceful-fs": "4.1.3", - "image-size": "0.4.0", - "mime": "1.3.4", + "image-size": "0.5.5", + "mime": "1.6.0", "mkdirp": "0.5.1", - "promise": "7.1.1", - "request": "2.71.0", - "source-map": "0.5.3" + "promise": "7.3.1", + "request": "2.81.0", + "source-map": "0.5.7" + }, + "dependencies": { + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + }, + "dependencies": { + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "optional": true, + "requires": { + "mime-db": "1.30.0" + } + } + } + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true, + "optional": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "2.0.6" + } + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true, + "optional": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.3.2", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.0", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.10", + "oauth-sign": "0.8.1", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true, + "optional": true + } } }, - "leven": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", - "integrity": "sha1-kUS27ryl8dBoAWnxpncNzqYLdcM=", - "dev": true + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } }, "load-json-file": { "version": "1.1.0", @@ -3062,17 +3317,38 @@ "lodash.isarray": "3.0.4" } }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, "lodash.restparam": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, "loud-rejection": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.3.0.tgz", @@ -3092,6 +3368,12 @@ "yallist": "2.0.0" } }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "dev": true + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -3115,6 +3397,12 @@ "node-emoji": "0.1.0" } }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -3133,31 +3421,10 @@ "trim-newlines": "1.0.0" } }, - "micromatch": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.7.tgz", - "integrity": "sha1-Ly6F70YUDb6my1XnObaxGzDqpQk=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.3", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.0", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.0.2", - "normalize-path": "2.0.1", - "object.omit": "2.0.0", - "parse-glob": "3.0.4", - "regex-cache": "0.4.3" - } - }, "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "optional": true }, @@ -3427,19 +3694,21 @@ } } }, - "nan": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.2.1.tgz", - "integrity": "sha1-1oaT9rNLtB1mvGizpPne/HnXFJs=", - "dev": true, - "optional": true - }, "ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", "dev": true }, + "nib": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", + "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", + "dev": true, + "requires": { + "stylus": "0.54.5" + } + }, "node-emoji": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-0.1.0.tgz", @@ -3459,6 +3728,15 @@ "which": "1.2.4" } }, + "node-source-walk": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-3.3.0.tgz", + "integrity": "sha1-rRjjW/2z0Lb34OSv8eePhGo7iHM=", + "dev": true, + "requires": { + "babylon": "6.18.0" + } + }, "node-uuid": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", @@ -3485,12 +3763,24 @@ "validate-npm-package-license": "3.0.1" } }, - "normalize-path": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz", - "integrity": "sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=", + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "4.0.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, "nth-check": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", @@ -3531,11 +3821,24 @@ } } }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, "number-is-nan": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", "integrity": "sha1-wCD1KcUoKt/dIz2R1LGBw9aG3Es=" }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true, + "optional": true + }, "oauth-sign": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.1.tgz", @@ -3553,16 +3856,6 @@ "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", "dev": true }, - "object.omit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.0.tgz", - "integrity": "sha1-hoWXMz1U5gZilAu0WGBd1q4S/pQ=", - "dev": true, - "requires": { - "for-own": "0.1.4", - "is-extendable": "0.1.1" - } - }, "once": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", @@ -3571,6 +3864,44 @@ "wrappy": "1.0.1" } }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, "os-homedir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", @@ -3585,33 +3916,11 @@ } }, "os-tmpdir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", - "integrity": "sha1-6bQjoe2vR5iCVi6S7XHXdDoHG24=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "output-file-sync": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", - "integrity": "sha1-pGU5l8LfY8mBH38dehIIQE7TLp4=", - "dev": true, - "requires": { - "mkdirp": "0.5.1", - "xtend": "4.0.1" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.2", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -3621,6 +3930,13 @@ "error-ex": "1.3.0" } }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true, + "optional": true + }, "path-exists": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", @@ -3632,6 +3948,12 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", "integrity": "sha1-Jj2tpmqz8vsQv3+dJN2PPlcO+RI=" }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", @@ -3649,6 +3971,13 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true, + "optional": true + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -3680,10 +4009,323 @@ "xmldom": "0.1.22" } }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqid": "4.1.1" + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "4.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, "pretty-bytes": { @@ -3697,9 +4339,9 @@ } }, "private": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz", - "integrity": "sha1-VcapdtD5uvuZJIUTUP5HubX7t8E=", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "dev": true }, "process-nextick-args": { @@ -3718,12 +4360,12 @@ } }, "promise": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", - "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz", + "integrity": "sha1-LOcp9rlLRcJoka0GAsXJDgTG7vY=", "dev": true, "requires": { - "asap": "2.0.3" + "asap": "1.0.0" } }, "prr": { @@ -3747,6 +4389,13 @@ "once": "1.3.3" } }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + }, "q": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", @@ -3758,14 +4407,22 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.1.0.tgz", "integrity": "sha1-7B0WJrJCeNmfD99FSeUk4k7O6yY=" }, - "randomatic": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.5.tgz", - "integrity": "sha1-Xp718tVzxnvSuBJK6QtRVuRXhAs=", + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", "dev": true, "requires": { - "is-number": "2.1.0", - "kind-of": "3.0.2" + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } } }, "rc": { @@ -3818,68 +4475,6 @@ "string_decoder": "0.10.31" } }, - "readdirp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.0.0.tgz", - "integrity": "sha1-zAm6XRLY/rhkvHX24uvBNwYMvYI=", - "dev": true, - "requires": { - "graceful-fs": "4.1.3", - "minimatch": "2.0.10", - "readable-stream": "2.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "dev": true, - "requires": { - "brace-expansion": "1.1.3" - } - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.1", - "isarray": "1.0.0", - "process-nextick-args": "1.0.6", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - } - } - }, - "recast": { - "version": "0.10.33", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", - "integrity": "sha1-lCgI96oBbx+nFCxGHX5XBKqo1pc=", - "dev": true, - "requires": { - "ast-types": "0.8.12", - "esprima-fb": "15001.1001.0-dev-harmony-fb", - "private": "0.1.6", - "source-map": "0.5.3" - }, - "dependencies": { - "esprima-fb": { - "version": "15001.1001.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", - "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=", - "dev": true - } - } - }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -3898,63 +4493,74 @@ "esprima-fb": "12001.1.0-dev-harmony-fb" } }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, "regenerate": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz", - "integrity": "sha1-njC6aKa9lqw9y6YqsJ1V1LL8vgQ=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", "dev": true }, - "regenerator": { - "version": "0.8.40", - "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.40.tgz", - "integrity": "sha1-oORXxY69uuV1yfjNdRJ+k3VkNdg=", + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { - "commoner": "0.10.4", - "defs": "1.1.1", - "esprima-fb": "15001.1001.0-dev-harmony-fb", - "private": "0.1.6", - "recast": "0.10.33", - "through": "2.3.8" - }, - "dependencies": { - "esprima-fb": { - "version": "15001.1001.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", - "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=", - "dev": true - } + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" } }, - "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" - } - }, - "regexpu": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.3.0.tgz", - "integrity": "sha1-5TTcmRqeWEYFDJjebX3UpVyeoW0=", - "dev": true, - "requires": { - "esprima": "2.7.2", - "recast": "0.10.33", - "regenerate": "1.2.1", + "regenerate": "1.3.3", "regjsgen": "0.2.0", "regjsparser": "0.1.5" - }, - "dependencies": { - "esprima": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz", - "integrity": "sha1-9DvlQ2CZhOrkTJM6xjNSpq818zk=", - "dev": true - } } }, "regjsgen": { @@ -3970,24 +4576,26 @@ "dev": true, "requires": { "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } } }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, "repeat-string": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz", - "integrity": "sha1-ZOwMkeD0tHX5DVtkNlHj5uW2wtU=", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "1.0.1" @@ -4029,6 +4637,15 @@ "throttleit": "1.0.0" } }, + "requirefresh": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/requirefresh/-/requirefresh-2.1.0.tgz", + "integrity": "sha1-dC3Mwg86lpGNZsbxWX3I/+vE9vU=", + "dev": true, + "requires": { + "editions": "1.3.3" + } + }, "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", @@ -4058,17 +4675,80 @@ "integrity": "sha1-iac93F51ye+KtjIMChYA1qQRebk=", "dev": true }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "safefs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/safefs/-/safefs-4.1.0.tgz", + "integrity": "sha1-+CrrS9165R9lPrIPZyizBYyNZEU=", + "dev": true, + "requires": { + "editions": "1.3.3", + "graceful-fs": "4.1.11" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, + "sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=", + "dev": true, + "requires": { + "es6-promise": "3.3.1", + "graceful-fs": "4.1.3", + "mkdirp": "0.5.1", + "rimraf": "2.5.2" + } + }, + "sass-lookup": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/sass-lookup/-/sass-lookup-1.1.0.tgz", + "integrity": "sha1-2kSiG+6llV8U7/24G97idRttFeI=", + "dev": true, + "requires": { + "commander": "2.8.1", + "is-relative-path": "1.0.2" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + } + } + }, + "sass.js": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/sass.js/-/sass.js-0.10.7.tgz", + "integrity": "sha512-HsCpVBkxigI3iGtkhdCeZdOAwdF6djEB48rTtuGgCGJOi/rY7XxvH6qgILJRbGxzv4CLSkm2jexoruLZRvT6TQ==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "semver": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=" }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, "shellwords": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.0.tgz", @@ -4080,18 +4760,6 @@ "integrity": "sha1-N1h5sfkuvDszRIDQONxUam1VhWQ=", "dev": true }, - "simple-fmt": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz", - "integrity": "sha1-GRv1ZqWeZTBILLJatTtKjchcOms=", - "dev": true - }, - "simple-is": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", - "integrity": "sha1-Krt1qt453rXMgVzhDmGRFkhQuvA=", - "dev": true - }, "single-line-log": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-0.4.1.tgz", @@ -4112,30 +4780,49 @@ "hoek": "2.16.3" } }, + "sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "minimist": "1.2.0", + "sander": "0.5.1", + "sourcemap-codec": "1.3.1" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, "source-map": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz", - "integrity": "sha1-gmdLhacbC+dsPnQW0V6fUlLrO+A=", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-support": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", - "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "0.1.32" - }, - "dependencies": { - "source-map": { - "version": "0.1.32", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", - "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", - "dev": true, - "requires": { - "amdefine": "1.0.0" - } - } + "source-map": "0.5.7" + } + }, + "sourcemap-codec": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.3.1.tgz", + "integrity": "sha1-mtb5vb1pGTEBbjCTnbyGhnMyMUY=", + "dev": true, + "requires": { + "vlq": "0.2.3" } }, "spdx-correct": { @@ -4175,6 +4862,12 @@ "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", "dev": true }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "sshpk": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.4.tgz", @@ -4189,10 +4882,10 @@ "tweetnacl": "0.14.3" } }, - "stable": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz", - "integrity": "sha1-CCMvYMcy6YkHhLW+0HNPizKoh7k=", + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, "string-width": { @@ -4210,18 +4903,6 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, - "stringmap": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", - "integrity": "sha1-VWwTeyWPlCuHdvWy71gqoGnX0bE=", - "dev": true - }, - "stringset": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz", - "integrity": "sha1-7yWcTjSTRDd/zRyRPdLoSMnAQrU=", - "dev": true - }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", @@ -4259,11 +4940,121 @@ "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", "dev": true }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.0", + "debug": "0.7.4", + "glob": "7.0.3", + "mkdirp": "0.5.1", + "sax": "0.5.8", + "source-map": "0.1.43" + }, + "dependencies": { + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "stylus-lookup": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stylus-lookup/-/stylus-lookup-1.0.2.tgz", + "integrity": "sha1-eVm+rAu1V+vROvO8Osvu/7J2YNQ=", + "dev": true, + "requires": { + "commander": "2.8.1", + "debug": "3.1.0", + "is-relative-path": "1.0.2" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + }, + "dependencies": { + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + } + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true, + "optional": true + }, + "synchronous-promise": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-1.0.18.tgz", + "integrity": "sha512-UqMAK6BBBXu8qaDI5omlyV9iDpM9nQfgthaBOK0nlfXnMgiuOBv+meWG73CGeCCFRhOOOa2e4rvqYzfynzy5zg==", + "dev": true + }, "tar-fs": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.12.0.tgz", @@ -4338,9 +5129,9 @@ } }, "to-fast-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.2.tgz", - "integrity": "sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "touch": { @@ -4368,6 +5159,102 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=" }, + "toutsuite": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/toutsuite/-/toutsuite-0.6.0.tgz", + "integrity": "sha1-+tK0RTcsy7gxYJ1OeAP885K+1M4=", + "dev": true, + "requires": { + "debug": "2.6.9", + "synchronous-promise": "1.0.18" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true, + "optional": true + }, + "transformers": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", + "integrity": "sha1-XSPLNVYd2F3Gf7hIIwm0fVPM6ac=", + "dev": true, + "requires": { + "css": "1.0.8", + "promise": "2.0.0", + "uglify-js": "2.2.5" + }, + "dependencies": { + "is-promise": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", + "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=", + "dev": true + }, + "optimist": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", + "dev": true, + "requires": { + "wordwrap": "0.0.3" + } + }, + "promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", + "integrity": "sha1-RmSKqdYFr10ucMMCS/WUNtoCuA4=", + "dev": true, + "requires": { + "is-promise": "1.0.1" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + }, + "uglify-js": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "integrity": "sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc=", + "dev": true, + "requires": { + "optimist": "0.3.7", + "source-map": "0.1.43" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, "traverse": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", @@ -4386,18 +5273,6 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "try-resolve": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz", - "integrity": "sha1-z95vq9ctY+V5fPqrhzq76OcA6RI=", - "dev": true - }, - "tryor": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz", - "integrity": "sha1-gUXkynyv9ArN48z5Rui4u3W0Fys=", - "dev": true - }, "tunnel-agent": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz", @@ -4409,6 +5284,24 @@ "integrity": "sha1-PaOC9nDyXe1417PReSEZvKC3Ey0=", "optional": true }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "typechecker": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-4.4.1.tgz", + "integrity": "sha1-+XuV9RsDhBchLWd9RaNz7nvO1+Y=", + "dev": true, + "requires": { + "editions": "1.3.3" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -4416,24 +5309,91 @@ "dev": true }, "typescript": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-1.4.1.tgz", - "integrity": "sha1-602phtG38BRS6vtXVZ4MyPUWzUg=", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", + "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", "dev": true }, - "typescript-simple": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typescript-simple/-/typescript-simple-1.0.3.tgz", - "integrity": "sha1-z+E+D12+ZJe8O/pZ/bkFDI39CH0=", + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "requires": { - "typescript": "1.4.1" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } } }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "dev": true, + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, "util-deprecate": { @@ -4451,6 +5411,12 @@ "spdx-expression-parse": "1.0.2" } }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "dev": true + }, "verror": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", @@ -4459,6 +5425,63 @@ "extsprintf": "1.0.2" } }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "vue-hot-reload-api": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.2.4.tgz", + "integrity": "sha512-e+ThJMYmZg4D9UnrLcr6LQxGu6YlcxkrmZGPCyIN4malcNhdeGGKxmFuM5y6ICMJJxQywLfT8MM1rYZr4LpeLw==", + "dev": true + }, + "vue-template-compiler": { + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.9.tgz", + "integrity": "sha512-Icev7QPuQ3flpOvxMe09irgXPklBi/VpiveUDs5nRVH5GA8R9asLBlahsA7AuRZQbaty0cGKm6kh/icDLcr93w==", + "dev": true, + "requires": { + "de-indent": "1.0.2", + "he": "1.1.1" + } + }, + "vue-template-es2015-compiler": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", + "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==", + "dev": true + }, + "webidl-conversions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", + "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", + "dev": true, + "optional": true + }, + "whatwg-url-compat": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", + "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", + "dev": true, + "optional": true, + "requires": { + "tr46": "0.0.3" + } + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, "which": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", @@ -4473,10 +5496,28 @@ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" }, + "with": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz", + "integrity": "sha1-7v0VTp550sjTQXtkeo8U2f7M4U4=", + "dev": true, + "requires": { + "acorn": "1.2.2", + "acorn-globals": "1.0.9" + }, + "dependencies": { + "acorn": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", + "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=", + "dev": true + } + } + }, "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, "wrap-ansi": { @@ -4492,6 +5533,13 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", "integrity": "sha1-HmWWmWXMvC20VIxrhKbyxa7dRzk=" }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true, + "optional": true + }, "xmlbuilder": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz", diff --git a/server-console/package.json b/server-console/package.json index f72ffc347f..128602efaa 100644 --- a/server-console/package.json +++ b/server-console/package.json @@ -8,7 +8,7 @@ "" ], "devDependencies": { - "electron-compilers": "^1.0.1", + "electron-compilers": "^5.9.0", "electron-packager": "^6.0.2", "electron-prebuilt": "0.37.5" }, From 1f54b1fcc311e4351f00ec047c84c825b9181a6d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 8 Dec 2017 14:09:39 -0800 Subject: [PATCH 308/329] remove unneeded dependency on electron-compilers --- server-console/package-lock.json | 3347 ------------------------------ server-console/package.json | 1 - 2 files changed, 3348 deletions(-) diff --git a/server-console/package-lock.json b/server-console/package-lock.json index 6097627b2b..51b7f2c268 100644 --- a/server-console/package-lock.json +++ b/server-console/package-lock.json @@ -4,96 +4,12 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@paulcbetts/mime-db": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/@paulcbetts/mime-db/-/mime-db-1.22.4.tgz", - "integrity": "sha1-uP+OeAh6QJkpkPcC+NnGVJm+LvE=", - "dev": true - }, - "@paulcbetts/mime-types": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/@paulcbetts/mime-types/-/mime-types-2.1.10.tgz", - "integrity": "sha1-iqUx8faPrICELnmu/4Z5fDCSJ90=", - "dev": true, - "requires": { - "@paulcbetts/mime-db": "1.22.4" - } - }, - "@paulcbetts/vueify": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/@paulcbetts/vueify/-/vueify-9.4.3.tgz", - "integrity": "sha1-NuLSO9fAGeit5I/IV/WjdkMeKlQ=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "convert-source-map": "1.5.1", - "cssnano": "3.10.0", - "hash-sum": "1.0.2", - "lru-cache": "4.0.1", - "object-assign": "4.0.1", - "source-map": "0.5.7", - "through": "2.3.8", - "vue-hot-reload-api": "2.2.4", - "vue-template-compiler": "2.5.9", - "vue-template-es2015-compiler": "1.6.0" - } - }, - "abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "dev": true, - "optional": true - }, "abbrev": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz", "integrity": "sha1-W2A1su6dT7XPhZ8Iqb6BsghJGEM=", "dev": true }, - "acorn": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", - "dev": true - }, - "acorn-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", - "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", - "dev": true, - "requires": { - "acorn": "2.7.0" - } - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, "always-tail": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/always-tail/-/always-tail-0.2.0.tgz", @@ -102,12 +18,6 @@ "debug": "0.7.4" } }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, "ansi-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", @@ -123,27 +33,12 @@ "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=" }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, "array-find-index": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz", "integrity": "sha1-C8Jd2slB7IpJauJY/UrBiAA+868=", "dev": true }, - "asap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz", - "integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0=", - "dev": true - }, "asar": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/asar/-/asar-0.11.0.tgz", @@ -189,27 +84,6 @@ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true, - "optional": true - }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000780", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, "aws-sign2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", @@ -223,770 +97,6 @@ "lru-cache": "4.0.1" } }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - } - } - }, - "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.7", - "trim-right": "1.0.1" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, - "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, - "requires": { - "babel-helper-define-map": "6.26.0", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", - "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "regexpu-core": "2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true, - "requires": { - "regenerator-transform": "0.10.1" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-preset-env": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", - "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "2.10.0", - "invariant": "2.2.2", - "semver": "5.4.1" - }, - "dependencies": { - "browserslist": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.10.0.tgz", - "integrity": "sha512-WyvzSLsuAVPOjbljXnyeWl14Ae+ukAT8MUuagKVzIDvwBxl4UAwD1xqtyQs2eWYPGUKMeC3Ol62goqYuKqTTcw==", - "dev": true, - "requires": { - "caniuse-lite": "1.0.30000780", - "electron-to-chromium": "1.3.28" - } - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - } - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "6.26.0", - "babel-runtime": "6.26.0", - "core-js": "2.5.1", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, "balanced-match": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz", @@ -1064,28 +174,6 @@ "concat-map": "0.0.1" } }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000780", - "electron-to-chromium": "1.3.28" - } - }, - "btoa": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.1.2.tgz", - "integrity": "sha1-PkC4FmP4HS3WWWpMtxSo3BbPq+A=", - "dev": true - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, "buffers": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", @@ -1113,30 +201,6 @@ "map-obj": "1.0.1" } }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000780", - "lodash.memoize": "4.1.2", - "lodash.uniq": "4.5.0" - } - }, - "caniuse-db": { - "version": "1.0.30000780", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000780.tgz", - "integrity": "sha1-jRl3Vh0A/w8O0ra2YUAyirRQTAo=", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30000780", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000780.tgz", - "integrity": "sha1-H5CV8u/UlA4LpsWZKreptkzDW6Q=", - "dev": true - }, "cardinal": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-0.5.0.tgz", @@ -1151,16 +215,6 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, "chainsaw": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", @@ -1182,12 +236,6 @@ "supports-color": "2.0.0" } }, - "character-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz", - "integrity": "sha1-wN3kqxgnE7kZuXCVmhI+zBow/NY=", - "dev": true - }, "cheerio": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz", @@ -1206,45 +254,6 @@ "integrity": "sha1-HUixB9ghJqLz4hHC6iX4A7pVGyE=", "dev": true }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "clean-css": { - "version": "3.4.28", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", - "dev": true, - "requires": { - "commander": "2.8.1", - "source-map": "0.4.4" - }, - "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, "cli-table": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", @@ -1280,28 +289,6 @@ "wrap-ansi": "2.0.0" } }, - "clone": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", - "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "optional": true - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true, - "requires": { - "q": "1.4.1" - } - }, "code-point-at": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", @@ -1310,58 +297,6 @@ "number-is-nan": "1.0.0" } }, - "coffee-script": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", - "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", - "dev": true - }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true, - "requires": { - "clone": "1.0.3", - "color-convert": "1.9.1", - "color-string": "0.3.0" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true, - "requires": { - "color": "0.11.4", - "css-color-names": "0.0.4", - "has": "1.0.1" - } - }, "colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", @@ -1421,27 +356,6 @@ } } }, - "constantinople": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz", - "integrity": "sha1-S5RdmTeQe82Y7ldRIsOBdRZUQUE=", - "dev": true, - "requires": { - "acorn": "2.7.0" - } - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1455,50 +369,6 @@ "boom": "2.10.1" } }, - "cson": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/cson/-/cson-3.0.2.tgz", - "integrity": "sha1-g+6Qids8JUvsHpjkmNmqzxGtzFQ=", - "dev": true, - "requires": { - "coffee-script": "1.12.7", - "cson-parser": "1.3.5", - "extract-opts": "3.3.1", - "requirefresh": "2.1.0", - "safefs": "4.1.0" - } - }, - "cson-parser": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-1.3.5.tgz", - "integrity": "sha1-fsZ14DkUVTO/KmqFYHPxWZ2cLSQ=", - "dev": true, - "requires": { - "coffee-script": "1.12.7" - } - }, - "css": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", - "integrity": "sha1-k4aBHKgrzMnuf7WnMrHioxfIo+c=", - "dev": true, - "requires": { - "css-parse": "1.0.4", - "css-stringify": "1.0.5" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", - "integrity": "sha1-OLBQP7+dqfVOnB29pg4UXHcRe90=", - "dev": true - }, "css-select": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz", @@ -1510,83 +380,11 @@ "nth-check": "1.0.1" } }, - "css-stringify": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", - "integrity": "sha1-sNBClG2ylTu50pKQCmy19tASIDE=", - "dev": true - }, "css-what": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz", "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w=" }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true, - "requires": { - "autoprefixer": "6.7.7", - "decamelize": "1.2.0", - "defined": "1.0.0", - "has": "1.0.1", - "object-assign": "4.0.1", - "postcss": "5.2.18", - "postcss-calc": "5.3.1", - "postcss-colormin": "2.2.2", - "postcss-convert-values": "2.6.1", - "postcss-discard-comments": "2.0.4", - "postcss-discard-duplicates": "2.1.0", - "postcss-discard-empty": "2.1.0", - "postcss-discard-overridden": "0.1.1", - "postcss-discard-unused": "2.2.3", - "postcss-filter-plugins": "2.0.2", - "postcss-merge-idents": "2.1.7", - "postcss-merge-longhand": "2.0.2", - "postcss-merge-rules": "2.1.2", - "postcss-minify-font-values": "1.0.5", - "postcss-minify-gradients": "1.0.5", - "postcss-minify-params": "1.2.2", - "postcss-minify-selectors": "2.1.1", - "postcss-normalize-charset": "1.1.1", - "postcss-normalize-url": "3.0.8", - "postcss-ordered-values": "2.2.3", - "postcss-reduce-idents": "2.4.0", - "postcss-reduce-initial": "1.0.1", - "postcss-reduce-transforms": "1.0.4", - "postcss-svgo": "2.1.6", - "postcss-unique-selectors": "2.0.2", - "postcss-value-parser": "3.3.0", - "postcss-zindex": "2.2.0" - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, - "requires": { - "clap": "1.2.3", - "source-map": "0.5.7" - } - }, - "cssom": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", - "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", - "dev": true - }, - "cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "dev": true, - "optional": true, - "requires": { - "cssom": "0.3.2" - } - }, "ctype": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", @@ -1614,12 +412,6 @@ } } }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", - "dev": true - }, "debug": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", @@ -1651,116 +443,11 @@ "integrity": "sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=", "dev": true }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "detective-less": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detective-less/-/detective-less-1.0.0.tgz", - "integrity": "sha1-Qmx4yatuMnW/ZsyRq6wAU7tFLX0=", - "dev": true, - "requires": { - "debug": "2.2.0", - "gonzales-pe": "3.4.7", - "node-source-walk": "3.3.0" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - } - } - }, - "detective-sass": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detective-sass/-/detective-sass-2.0.1.tgz", - "integrity": "sha1-BWYKoblc/Yf1dGQ7+s4+iiaBEqE=", - "dev": true, - "requires": { - "debug": "3.1.0", - "gonzales-pe": "3.4.7", - "node-source-walk": "3.3.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "detective-scss": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/detective-scss/-/detective-scss-1.0.1.tgz", - "integrity": "sha1-dDJGoN01jZ2R/0ElQX9qd/vPJw8=", - "dev": true, - "requires": { - "debug": "3.1.0", - "gonzales-pe": "3.4.7", - "node-source-walk": "3.3.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "detective-stylus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detective-stylus/-/detective-stylus-1.0.0.tgz", - "integrity": "sha1-UK7n24uruZA4HwEMY/q7pbWOVM0=", - "dev": true - }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", @@ -1798,16 +485,6 @@ "domelementtype": "1.3.0" } }, - "eachr": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eachr/-/eachr-3.2.0.tgz", - "integrity": "sha1-LDXkPqCGUW95l8+At6pk1VpKRIQ=", - "dev": true, - "requires": { - "editions": "1.3.3", - "typechecker": "4.4.1" - } - }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -1817,172 +494,6 @@ "jsbn": "0.1.0" } }, - "editions": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.3.tgz", - "integrity": "sha1-CQcQG92iD6w8vjNMJ8vQaI3Jmls=", - "dev": true - }, - "electron-compilers": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/electron-compilers/-/electron-compilers-5.9.0.tgz", - "integrity": "sha1-lT3BTiT7FbN9XpDeLDnXU/P4FA4=", - "dev": true, - "requires": { - "@paulcbetts/mime-types": "2.1.10", - "@paulcbetts/vueify": "9.4.3", - "babel-core": "6.26.0", - "babel-preset-env": "1.6.1", - "btoa": "1.1.2", - "cheerio": "0.20.0", - "coffee-script": "1.12.7", - "cson": "3.0.2", - "debug": "2.6.9", - "detective-less": "1.0.0", - "detective-sass": "2.0.1", - "detective-scss": "1.0.1", - "detective-stylus": "1.0.0", - "graphql": "0.9.6", - "graphql-tag": "2.6.0", - "istanbul": "0.4.5", - "jade": "1.11.0", - "js-string-escape": "1.0.1", - "less": "2.7.3", - "mkdirp": "0.5.1", - "nib": "1.1.2", - "resolve": "1.5.0", - "rimraf": "2.6.2", - "sass-lookup": "1.1.0", - "sass.js": "0.10.7", - "sorcery": "0.10.0", - "stylus": "0.54.5", - "stylus-lookup": "1.0.2", - "toutsuite": "0.6.0", - "typescript": "2.6.2" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "cheerio": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", - "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", - "dev": true, - "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.8.3", - "jsdom": "7.2.2", - "lodash": "4.17.4" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", - "domutils": "1.5.1", - "nth-check": "1.0.1" - } - }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.4", - "inherits": "2.0.1", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", - "dev": true, - "requires": { - "path-parse": "1.0.5" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "7.1.2" - } - } - } - }, "electron-download": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-2.1.1.tgz", @@ -2059,12 +570,6 @@ "extract-zip": "1.5.0" } }, - "electron-to-chromium": { - "version": "1.3.28", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz", - "integrity": "sha1-jdTmRYCGZE6fnwoc8y4qH53/2e4=", - "dev": true - }, "end-of-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", @@ -2078,16 +583,6 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true, - "optional": true, - "requires": { - "prr": "0.0.0" - } - }, "error-ex": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", @@ -2097,74 +592,21 @@ "is-arrayish": "0.2.1" } }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", - "dev": true - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "escodegen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", - "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", - "dev": true, - "optional": true, - "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.5.7" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true, - "optional": true - } - } - }, "esprima-fb": { "version": "12001.1.0-dev-harmony-fb", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-12001.1.0-dev-harmony-fb.tgz", "integrity": "sha1-2EQAOEupXOJnjGF60kp/QICNqRU=" }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true, - "optional": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, "extend": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" }, - "extract-opts": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/extract-opts/-/extract-opts-3.3.1.tgz", - "integrity": "sha1-WrvtyYwNUgLjJ4cn+Rktfghsa+E=", - "dev": true, - "requires": { - "eachr": "3.2.0", - "editions": "1.3.3", - "typechecker": "4.4.1" - } - }, "extract-zip": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", @@ -2199,12 +641,6 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, "fd-slicer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", @@ -2235,12 +671,6 @@ } } }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -2268,18 +698,6 @@ "rimraf": "2.5.2" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "generate-function": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", @@ -2330,29 +748,6 @@ "path-is-absolute": "1.0.0" } }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "gonzales-pe": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-3.4.7.tgz", - "integrity": "sha1-F8e+Z61sr/Ynej44esc26YPSgOw=", - "dev": true, - "requires": { - "minimist": "1.1.3" - }, - "dependencies": { - "minimist": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", - "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", - "dev": true - } - } - }, "graceful-fs": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz", @@ -2363,56 +758,11 @@ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" }, - "graphql": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.9.6.tgz", - "integrity": "sha1-UUQh6dIlwp38j9MFRZq65YgV7yw=", - "dev": true, - "requires": { - "iterall": "1.1.3" - } - }, - "graphql-tag": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.6.0.tgz", - "integrity": "sha1-D7G59tZlEmPEejQg6CeRDm/tOVI=", - "dev": true - }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, - "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dev": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true, - "optional": true - }, "har-validator": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", @@ -2424,15 +774,6 @@ "pinkie-promise": "2.0.1" } }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, - "requires": { - "function-bind": "1.1.1" - } - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -2441,18 +782,6 @@ "ansi-regex": "2.0.0" } }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", @@ -2464,27 +793,11 @@ "sntp": "1.0.9" } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "1.0.1", - "os-tmpdir": "1.0.2" - } - }, "home-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.3.tgz", @@ -2497,12 +810,6 @@ "integrity": "sha1-2elTsmmIvogJbEbpJklNlgTDAPg=", "dev": true }, - "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", - "dev": true - }, "htmlparser2": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", @@ -2541,13 +848,6 @@ "sshpk": "1.7.4" } }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true, - "optional": true - }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", @@ -2568,12 +868,6 @@ } } }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, "inflight": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", @@ -2594,15 +888,6 @@ "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "dev": true }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, - "requires": { - "loose-envify": "1.3.1" - } - }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -2616,24 +901,12 @@ "is-relative": "0.1.3" } }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", @@ -2671,18 +944,6 @@ "xtend": "4.0.1" } }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -2693,21 +954,6 @@ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=" }, - "is-relative-path": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-relative-path/-/is-relative-path-1.0.2.tgz", - "integrity": "sha1-CRtGoNZ8HtD+hfH4z93gBrslHUY=", - "dev": true - }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true, - "requires": { - "html-comment-regex": "1.1.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -2734,119 +980,6 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "dev": true, - "requires": { - "abbrev": "1.0.7", - "async": "1.5.2", - "escodegen": "1.8.1", - "esprima": "2.7.3", - "glob": "5.0.15", - "handlebars": "4.0.11", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.3.3", - "resolve": "1.1.7", - "supports-color": "3.2.3", - "which": "1.2.4", - "wordwrap": "1.0.0" - }, - "dependencies": { - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, - "requires": { - "esprima": "2.7.3", - "estraverse": "1.9.3", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.2.0" - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.4", - "inherits": "2.0.1", - "minimatch": "3.0.0", - "once": "1.3.3", - "path-is-absolute": "1.0.0" - } - }, - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "requires": { - "amdefine": "1.0.1" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "iterall": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.3.tgz", - "integrity": "sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ==", - "dev": true - }, - "jade": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz", - "integrity": "sha1-nIDlOMEtP7lcjZu5VZ+gzAQEBf0=", - "dev": true, - "requires": { - "character-parser": "1.2.1", - "clean-css": "3.4.28", - "commander": "2.6.0", - "constantinople": "3.0.2", - "jstransformer": "0.0.2", - "mkdirp": "0.5.1", - "transformers": "2.1.0", - "uglify-js": "2.8.29", - "void-elements": "2.0.1", - "with": "4.0.3" - }, - "dependencies": { - "commander": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", - "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", - "dev": true - } - } - }, "jodid25519": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", @@ -2856,116 +989,27 @@ "jsbn": "0.1.0" } }, - "js-base64": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", - "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==", - "dev": true - }, - "js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "2.7.3" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - } - } - }, "jsbn": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", "integrity": "sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=", "optional": true }, - "jsdom": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", - "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", - "dev": true, - "optional": true, - "requires": { - "abab": "1.0.4", - "acorn": "2.7.0", - "acorn-globals": "1.0.9", - "cssom": "0.3.2", - "cssstyle": "0.2.37", - "escodegen": "1.9.0", - "nwmatcher": "1.4.3", - "parse5": "1.5.1", - "request": "2.71.0", - "sax": "1.2.4", - "symbol-tree": "3.2.2", - "tough-cookie": "2.2.2", - "webidl-conversions": "2.0.1", - "whatwg-url-compat": "0.6.5", - "xml-name-validator": "2.0.1" - } - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, "json-schema": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", "integrity": "sha1-UDVPGfYDkXxpX3C4Wvp3w7DyNQY=" }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, "jsonfile": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.2.3.tgz", "integrity": "sha1-4lK5mmr5AdPsQfMyWJyQUJp7xgU=" }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true, - "optional": true - }, "jsonpointer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", @@ -2981,36 +1025,11 @@ "verror": "1.3.6" } }, - "jstransformer": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-0.0.2.tgz", - "integrity": "sha1-eq4pqQPRls+glz2IXT5HlH7Ndqs=", - "dev": true, - "requires": { - "is-promise": "2.1.0", - "promise": "6.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - }, "klaw": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.1.3.tgz", "integrity": "sha1-faM8a0L5s9yc7ADRfxOvAX/MJyE=" }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -3019,165 +1038,6 @@ "invert-kv": "1.0.0" } }, - "less": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", - "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", - "dev": true, - "requires": { - "errno": "0.1.4", - "graceful-fs": "4.1.3", - "image-size": "0.5.5", - "mime": "1.6.0", - "mkdirp": "0.5.1", - "promise": "7.3.1", - "request": "2.81.0", - "source-map": "0.5.7" - }, - "dependencies": { - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true, - "optional": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - }, - "dependencies": { - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "dev": true, - "optional": true, - "requires": { - "mime-db": "1.30.0" - } - } - } - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", - "dev": true, - "optional": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "optional": true, - "requires": { - "asap": "2.0.6" - } - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true, - "optional": true - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.3.2", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.0", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.10", - "oauth-sign": "0.8.1", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" - } - }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "dev": true, - "optional": true - } - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -3317,38 +1177,11 @@ "lodash.isarray": "3.0.4" } }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, "lodash.restparam": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, - "requires": { - "js-tokens": "3.0.2" - } - }, "loud-rejection": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.3.0.tgz", @@ -3368,12 +1201,6 @@ "yallist": "2.0.0" } }, - "macaddress": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", - "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", - "dev": true - }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -3397,12 +1224,6 @@ "node-emoji": "0.1.0" } }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true - }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -3421,13 +1242,6 @@ "trim-newlines": "1.0.0" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true - }, "mime-db": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.22.0.tgz", @@ -3700,15 +1514,6 @@ "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", "dev": true }, - "nib": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", - "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", - "dev": true, - "requires": { - "stylus": "0.54.5" - } - }, "node-emoji": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-0.1.0.tgz", @@ -3728,15 +1533,6 @@ "which": "1.2.4" } }, - "node-source-walk": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-3.3.0.tgz", - "integrity": "sha1-rRjjW/2z0Lb34OSv8eePhGo7iHM=", - "dev": true, - "requires": { - "babylon": "6.18.0" - } - }, "node-uuid": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", @@ -3763,24 +1559,6 @@ "validate-npm-package-license": "3.0.1" } }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "4.0.1", - "prepend-http": "1.0.4", - "query-string": "4.3.4", - "sort-keys": "1.1.2" - } - }, "nth-check": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", @@ -3821,24 +1599,11 @@ } } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, "number-is-nan": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", "integrity": "sha1-wCD1KcUoKt/dIz2R1LGBw9aG3Es=" }, - "nwmatcher": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", - "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", - "dev": true, - "optional": true - }, "oauth-sign": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.1.tgz", @@ -3864,44 +1629,6 @@ "wrappy": "1.0.1" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - } - }, "os-homedir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", @@ -3915,12 +1642,6 @@ "lcid": "1.0.0" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -3930,13 +1651,6 @@ "error-ex": "1.3.0" } }, - "parse5": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", - "dev": true, - "optional": true - }, "path-exists": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", @@ -3948,12 +1662,6 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", "integrity": "sha1-Jj2tpmqz8vsQv3+dJN2PPlcO+RI=" }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", @@ -3971,13 +1679,6 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true, - "optional": true - }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -4009,325 +1710,6 @@ "xmldom": "0.1.22" } }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-message-helpers": "2.0.0", - "reduce-css-calc": "1.3.0" - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true, - "requires": { - "colormin": "1.1.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "uniqs": "2.0.0" - } - }, - "postcss-filter-plugins": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", - "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "uniqid": "4.1.1" - } - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-api": "1.6.1", - "postcss": "5.2.18", - "postcss-selector-parser": "2.2.3", - "vendors": "1.0.1" - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", - "dev": true - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true, - "requires": { - "object-assign": "4.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0", - "uniqs": "2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-selector-parser": "2.2.3" - } - }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true, - "requires": { - "is-absolute-url": "2.1.0", - "normalize-url": "1.9.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "1.0.2", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true, - "requires": { - "is-svg": "2.1.0", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0", - "svgo": "0.7.2" - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.18", - "uniqs": "2.0.0" - } - }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", - "dev": true - }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "uniqs": "2.0.0" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, "pretty-bytes": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", @@ -4338,12 +1720,6 @@ "meow": "3.7.0" } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.6.tgz", @@ -4359,22 +1735,6 @@ "through2": "0.2.3" } }, - "promise": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz", - "integrity": "sha1-LOcp9rlLRcJoka0GAsXJDgTG7vY=", - "dev": true, - "requires": { - "asap": "1.0.0" - } - }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true, - "optional": true - }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -4389,13 +1749,6 @@ "once": "1.3.3" } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "optional": true - }, "q": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", @@ -4407,24 +1760,6 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.1.0.tgz", "integrity": "sha1-7B0WJrJCeNmfD99FSeUk4k7O6yY=" }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } - } - }, "rc": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", @@ -4493,114 +1828,6 @@ "esprima-fb": "12001.1.0-dev-harmony-fb" } }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "math-expression-evaluator": "1.2.17", - "reduce-function-call": "1.0.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, - "requires": { - "balanced-match": "0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "private": "0.1.8" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, - "requires": { - "regenerate": "1.3.3", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "1.0.1" - } - }, "request": { "version": "2.71.0", "resolved": "https://registry.npmjs.org/request/-/request-2.71.0.tgz", @@ -4637,30 +1864,12 @@ "throttleit": "1.0.0" } }, - "requirefresh": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/requirefresh/-/requirefresh-2.1.0.tgz", - "integrity": "sha1-dC3Mwg86lpGNZsbxWX3I/+vE9vU=", - "dev": true, - "requires": { - "editions": "1.3.3" - } - }, "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "0.1.4" - } - }, "rimraf": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.2.tgz", @@ -4675,75 +1884,6 @@ "integrity": "sha1-iac93F51ye+KtjIMChYA1qQRebk=", "dev": true }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - }, - "safefs": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/safefs/-/safefs-4.1.0.tgz", - "integrity": "sha1-+CrrS9165R9lPrIPZyizBYyNZEU=", - "dev": true, - "requires": { - "editions": "1.3.3", - "graceful-fs": "4.1.11" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - } - } - }, - "sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=", - "dev": true, - "requires": { - "es6-promise": "3.3.1", - "graceful-fs": "4.1.3", - "mkdirp": "0.5.1", - "rimraf": "2.5.2" - } - }, - "sass-lookup": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/sass-lookup/-/sass-lookup-1.1.0.tgz", - "integrity": "sha1-2kSiG+6llV8U7/24G97idRttFeI=", - "dev": true, - "requires": { - "commander": "2.8.1", - "is-relative-path": "1.0.2" - }, - "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - } - } - }, - "sass.js": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/sass.js/-/sass.js-0.10.7.tgz", - "integrity": "sha512-HsCpVBkxigI3iGtkhdCeZdOAwdF6djEB48rTtuGgCGJOi/rY7XxvH6qgILJRbGxzv4CLSkm2jexoruLZRvT6TQ==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, "semver": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", @@ -4766,12 +1906,6 @@ "integrity": "sha1-h6VWSfdJ14PsDc2AToFA2Yc8fO4=", "dev": true }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", @@ -4780,51 +1914,6 @@ "hoek": "2.16.3" } }, - "sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=", - "dev": true, - "requires": { - "buffer-crc32": "0.2.13", - "minimist": "1.2.0", - "sander": "0.5.1", - "sourcemap-codec": "1.3.1" - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "1.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, - "sourcemap-codec": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.3.1.tgz", - "integrity": "sha1-mtb5vb1pGTEBbjCTnbyGhnMyMUY=", - "dev": true, - "requires": { - "vlq": "0.2.3" - } - }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -4862,12 +1951,6 @@ "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", "dev": true }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, "sshpk": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.4.tgz", @@ -4882,12 +1965,6 @@ "tweetnacl": "0.14.3" } }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, "string-width": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", @@ -4940,121 +2017,11 @@ "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", "dev": true }, - "stylus": { - "version": "0.54.5", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", - "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", - "dev": true, - "requires": { - "css-parse": "1.7.0", - "debug": "0.7.4", - "glob": "7.0.3", - "mkdirp": "0.5.1", - "sax": "0.5.8", - "source-map": "0.1.43" - }, - "dependencies": { - "css-parse": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", - "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", - "dev": true - }, - "sax": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", - "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "stylus-lookup": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stylus-lookup/-/stylus-lookup-1.0.2.tgz", - "integrity": "sha1-eVm+rAu1V+vROvO8Osvu/7J2YNQ=", - "dev": true, - "requires": { - "commander": "2.8.1", - "debug": "3.1.0", - "is-relative-path": "1.0.2" - }, - "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true, - "requires": { - "coa": "1.0.4", - "colors": "1.1.2", - "csso": "2.3.2", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "sax": "1.2.4", - "whet.extend": "0.9.9" - }, - "dependencies": { - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - } - } - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true, - "optional": true - }, - "synchronous-promise": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-1.0.18.tgz", - "integrity": "sha512-UqMAK6BBBXu8qaDI5omlyV9iDpM9nQfgthaBOK0nlfXnMgiuOBv+meWG73CGeCCFRhOOOa2e4rvqYzfynzy5zg==", - "dev": true - }, "tar-fs": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.12.0.tgz", @@ -5101,12 +2068,6 @@ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=" }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, "through2": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", @@ -5128,12 +2089,6 @@ } } }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, "touch": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", @@ -5159,102 +2114,6 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=" }, - "toutsuite": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/toutsuite/-/toutsuite-0.6.0.tgz", - "integrity": "sha1-+tK0RTcsy7gxYJ1OeAP885K+1M4=", - "dev": true, - "requires": { - "debug": "2.6.9", - "synchronous-promise": "1.0.18" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true, - "optional": true - }, - "transformers": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", - "integrity": "sha1-XSPLNVYd2F3Gf7hIIwm0fVPM6ac=", - "dev": true, - "requires": { - "css": "1.0.8", - "promise": "2.0.0", - "uglify-js": "2.2.5" - }, - "dependencies": { - "is-promise": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=", - "dev": true - }, - "optimist": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", - "dev": true, - "requires": { - "wordwrap": "0.0.3" - } - }, - "promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", - "integrity": "sha1-RmSKqdYFr10ucMMCS/WUNtoCuA4=", - "dev": true, - "requires": { - "is-promise": "1.0.1" - } - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - }, - "uglify-js": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "integrity": "sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc=", - "dev": true, - "requires": { - "optimist": "0.3.7", - "source-map": "0.1.43" - } - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, "traverse": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", @@ -5267,12 +2126,6 @@ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", "dev": true }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, "tunnel-agent": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz", @@ -5284,118 +2137,12 @@ "integrity": "sha1-PaOC9nDyXe1417PReSEZvKC3Ey0=", "optional": true }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2" - } - }, - "typechecker": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-4.4.1.tgz", - "integrity": "sha1-+XuV9RsDhBchLWd9RaNz7nvO1+Y=", - "dev": true, - "requires": { - "editions": "1.3.3" - } - }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "typescript": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", - "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", - "dev": true - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqid": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "dev": true, - "requires": { - "macaddress": "0.2.8" - } - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -5411,12 +2158,6 @@ "spdx-expression-parse": "1.0.2" } }, - "vendors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", - "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", - "dev": true - }, "verror": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", @@ -5425,63 +2166,6 @@ "extsprintf": "1.0.2" } }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "vue-hot-reload-api": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.2.4.tgz", - "integrity": "sha512-e+ThJMYmZg4D9UnrLcr6LQxGu6YlcxkrmZGPCyIN4malcNhdeGGKxmFuM5y6ICMJJxQywLfT8MM1rYZr4LpeLw==", - "dev": true - }, - "vue-template-compiler": { - "version": "2.5.9", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.9.tgz", - "integrity": "sha512-Icev7QPuQ3flpOvxMe09irgXPklBi/VpiveUDs5nRVH5GA8R9asLBlahsA7AuRZQbaty0cGKm6kh/icDLcr93w==", - "dev": true, - "requires": { - "de-indent": "1.0.2", - "he": "1.1.1" - } - }, - "vue-template-es2015-compiler": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", - "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==", - "dev": true - }, - "webidl-conversions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", - "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", - "dev": true, - "optional": true - }, - "whatwg-url-compat": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", - "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", - "dev": true, - "optional": true, - "requires": { - "tr46": "0.0.3" - } - }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true - }, "which": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", @@ -5496,30 +2180,6 @@ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" }, - "with": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz", - "integrity": "sha1-7v0VTp550sjTQXtkeo8U2f7M4U4=", - "dev": true, - "requires": { - "acorn": "1.2.2", - "acorn-globals": "1.0.9" - }, - "dependencies": { - "acorn": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", - "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=", - "dev": true - } - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, "wrap-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.0.0.tgz", @@ -5533,13 +2193,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", "integrity": "sha1-HmWWmWXMvC20VIxrhKbyxa7dRzk=" }, - "xml-name-validator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", - "dev": true, - "optional": true - }, "xmlbuilder": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz", diff --git a/server-console/package.json b/server-console/package.json index 128602efaa..8d2a177e0a 100644 --- a/server-console/package.json +++ b/server-console/package.json @@ -8,7 +8,6 @@ "" ], "devDependencies": { - "electron-compilers": "^5.9.0", "electron-packager": "^6.0.2", "electron-prebuilt": "0.37.5" }, From 34243f423952549d4d703ac4497d5678a0ee8405 Mon Sep 17 00:00:00 2001 From: humbletim Date: Fri, 8 Dec 2017 17:10:57 -0500 Subject: [PATCH 309/329] disable connections console.log to prevent UI lag --- interface/resources/qml/hifi/Pal.qml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index efcf6ccfcf..b46d238908 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -26,6 +26,7 @@ Rectangle { // Style color: "#E3E3E3"; // Properties + property bool debug: false property int myCardWidth: width - upperRightInfoContainer.width; property int myCardHeight: 80; property int rowHeight: 60; @@ -1120,7 +1121,9 @@ Rectangle { break; case 'connections': var data = message.params; - console.log('Got connection data: ', JSON.stringify(data)); + if (pal.debug) { + console.log('Got connection data: ', JSON.stringify(data)); + } connectionsUserModelData = data; sortConnectionsModel(); connectionsLoading.visible = false; From 3265eb42f191d726e98494de89f30a80581d218c Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 5 Dec 2017 15:42:44 -0800 Subject: [PATCH 310/329] only attempt default asset upload for local files --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index d7fcbf6467..2c0bbb76b2 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5974,7 +5974,7 @@ bool Application::acceptURL(const QString& urlString, bool defaultUpload) { } } - if (defaultUpload) { + if (defaultUpload && !url.fileName().isEmpty() && url.isLocalFile()) { showAssetServerWidget(urlString); } return defaultUpload; From abba85ac5427d4daf429f3a5d9b052e2688fed2a Mon Sep 17 00:00:00 2001 From: humbletim Date: Fri, 8 Dec 2017 18:14:30 -0500 Subject: [PATCH 311/329] add missing colonsemi --- interface/resources/qml/hifi/Pal.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index b46d238908..64f61f0d69 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -26,7 +26,7 @@ Rectangle { // Style color: "#E3E3E3"; // Properties - property bool debug: false + property bool debug: false; property int myCardWidth: width - upperRightInfoContainer.width; property int myCardHeight: 80; property int rowHeight: 60; From 982607eedfeef62163d8e74b1415e0b9ddb5f463 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 8 Dec 2017 15:40:33 -0800 Subject: [PATCH 312/329] Remove unused variable from PathUtils --- libraries/shared/src/PathUtils.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/shared/src/PathUtils.cpp b/libraries/shared/src/PathUtils.cpp index 4ec35e491e..add1f6f531 100644 --- a/libraries/shared/src/PathUtils.cpp +++ b/libraries/shared/src/PathUtils.cpp @@ -83,7 +83,6 @@ int PathUtils::removeTemporaryApplicationDirs(QString appName) { auto dirName = TEMP_DIR_FORMAT.arg(appName).arg("*").arg("*"); qDebug() << "Dirname format is: " << dirName; - auto pid = qApp->applicationPid(); QDir rootTempDir = QDir::tempPath(); auto dirs = rootTempDir.entryInfoList({ dirName }, QDir::Dirs); From a99072622a78a8eaa8b50f1913ae24e7af796650 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 8 Dec 2017 15:41:47 -0800 Subject: [PATCH 313/329] Fix Create mode :| --- scripts/system/libraries/gridTool.js | 4 +++- scripts/system/marketplaces/marketplaces.js | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/system/libraries/gridTool.js b/scripts/system/libraries/gridTool.js index 2c417a9dde..19d4417a12 100644 --- a/scripts/system/libraries/gridTool.js +++ b/scripts/system/libraries/gridTool.js @@ -242,7 +242,9 @@ GridTool = function(opts) { horizontalGrid.addListener(function(data) { webView.emitScriptEvent(JSON.stringify(data)); - selectionDisplay.updateHandles(); + if (selectionDisplay) { + selectionDisplay.updateHandles(); + } }); webView.webEventReceived.connect(function(data) { diff --git a/scripts/system/marketplaces/marketplaces.js b/scripts/system/marketplaces/marketplaces.js index afeaf1c909..004375bff7 100644 --- a/scripts/system/marketplaces/marketplaces.js +++ b/scripts/system/marketplaces/marketplaces.js @@ -11,10 +11,12 @@ /* global Tablet, Script, HMD, UserActivityLogger, Entities */ /* eslint indent: ["error", 4, { "outerIIFEBody": 0 }] */ +var selectionDisplay = null; // for gridTool.js to ignore + (function () { // BEGIN LOCAL_SCOPE - Script.include("../libraries/WebTablet.js"); - Script.include("../libraries/gridTool.js"); + Script.include("/~/system/libraries/WebTablet.js"); + Script.include("/~/system/libraries/gridTool.js"); var METAVERSE_SERVER_URL = Account.metaverseServerURL; var MARKETPLACE_URL = METAVERSE_SERVER_URL + "/marketplace"; From 44c76061ed58af4418b617cac571088e00f95a14 Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Fri, 8 Dec 2017 16:25:10 -0800 Subject: [PATCH 314/329] Lowered threshold to 0.999 --- tools/auto-tester/src/Test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index c04dc078af..fe5811ebba 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -24,7 +24,7 @@ Test::Test() { bool Test::compareImageLists(QStringList expectedImages, QStringList resultImages) { // Loop over both lists and compare each pair of images // Quit loop if user has aborted due to a failed test. - const double THRESHOLD{ 0.9995 }; + const double THRESHOLD{ 0.999 }; bool success{ true }; bool keepOn{ true }; for (int i = 0; keepOn && i < expectedImages.length(); ++i) { From 9ff1b4bcb118ee0c2d31b8b143bec0ebf124f0f5 Mon Sep 17 00:00:00 2001 From: Nissim Hadar Date: Fri, 8 Dec 2017 16:38:46 -0800 Subject: [PATCH 315/329] WTF.... --- tools/auto-tester/src/Test.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index fe5811ebba..8cb36fcfca 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -352,8 +352,7 @@ void Test::createTest() { + "\nTest creation aborted" ); exit(-1); - } - else { + } else { messageBox.critical(0, "Error", "Could not rename file: " + fullCurrentFilename + " to: " + newFilename + "\n" + "unknown error" + "\nTest creation aborted" ); From 50c47c785d70916a8e0bd53c1a49d9b239a3c3ab Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 8 Dec 2017 17:45:42 -0800 Subject: [PATCH 316/329] Fix BakeAssetTask not handling case where oven process is not found --- assignment-client/src/assets/BakeAssetTask.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index 427f41c494..69123e4909 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -115,7 +115,12 @@ void BakeAssetTask::run() { qDebug() << "Starting oven for " << _assetPath; _ovenProcess->start(path, args, QIODevice::ReadOnly); - _ovenProcess->waitForStarted(); + if (!_ovenProcess->waitForStarted(-1)) { + _didFinish.store(true); + QString errors = "Oven process failed to start"; + emit bakeFailed(_assetHash, _assetPath, errors); + return; + } _ovenProcess->waitForFinished(); } From 239877fc187d0ade76812f865a7190ca7102508e Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 8 Dec 2017 17:47:57 -0800 Subject: [PATCH 317/329] Remove _didFinish from BakeAssetTask --- assignment-client/src/assets/BakeAssetTask.cpp | 4 ---- assignment-client/src/assets/BakeAssetTask.h | 2 -- 2 files changed, 6 deletions(-) diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index 69123e4909..396857bf3a 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -78,7 +78,6 @@ void BakeAssetTask::run() { if (_wasAborted) { emit bakeAborted(_assetHash, _assetPath); } else { - _didFinish.store(true); QString errors = "Fatal error occurred while baking"; emit bakeFailed(_assetHash, _assetPath, errors); } @@ -90,7 +89,6 @@ void BakeAssetTask::run() { outputFiles.push_back(file.absoluteFilePath()); } - _didFinish.store(true); emit bakeComplete(_assetHash, _assetPath, tempOutputDir, outputFiles); } else if (exitStatus == QProcess::NormalExit && exitCode == OVEN_STATUS_CODE_ABORT) { _wasAborted.store(true); @@ -98,7 +96,6 @@ void BakeAssetTask::run() { } else { QString errors; if (exitCode == OVEN_STATUS_CODE_FAIL) { - _didFinish.store(true); auto errorFilePath = _outputDir.absoluteFilePath("errors.txt"); QFile errorFile { errorFilePath }; if (errorFile.open(QIODevice::ReadOnly)) { @@ -116,7 +113,6 @@ void BakeAssetTask::run() { qDebug() << "Starting oven for " << _assetPath; _ovenProcess->start(path, args, QIODevice::ReadOnly); if (!_ovenProcess->waitForStarted(-1)) { - _didFinish.store(true); QString errors = "Oven process failed to start"; emit bakeFailed(_assetHash, _assetPath, errors); return; diff --git a/assignment-client/src/assets/BakeAssetTask.h b/assignment-client/src/assets/BakeAssetTask.h index d6c2446df5..edbce4c1d4 100644 --- a/assignment-client/src/assets/BakeAssetTask.h +++ b/assignment-client/src/assets/BakeAssetTask.h @@ -33,7 +33,6 @@ public: void abort(); bool wasAborted() const { return _wasAborted.load(); } - bool didFinish() const { return _didFinish.load(); } signals: void bakeComplete(QString assetHash, QString assetPath, QString tempOutputDir, QVector outputFiles); @@ -48,7 +47,6 @@ private: QDir _outputDir; std::unique_ptr _ovenProcess { nullptr }; std::atomic _wasAborted { false }; - std::atomic _didFinish { false }; }; #endif // hifi_BakeAssetTask_h From e3d00c4aa586de1a5eb4ddd0cc283427a7b55558 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 8 Dec 2017 17:48:10 -0800 Subject: [PATCH 318/329] Remove unnecessary logging from PathUtils --- libraries/shared/src/PathUtils.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/shared/src/PathUtils.cpp b/libraries/shared/src/PathUtils.cpp index add1f6f531..6f2e7d8b19 100644 --- a/libraries/shared/src/PathUtils.cpp +++ b/libraries/shared/src/PathUtils.cpp @@ -82,7 +82,6 @@ int PathUtils::removeTemporaryApplicationDirs(QString appName) { } auto dirName = TEMP_DIR_FORMAT.arg(appName).arg("*").arg("*"); - qDebug() << "Dirname format is: " << dirName; QDir rootTempDir = QDir::tempPath(); auto dirs = rootTempDir.entryInfoList({ dirName }, QDir::Dirs); From 5cf2ab5cbd3c72ed6ebfe5b27a6eb51ef7f52f81 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 8 Dec 2017 17:53:49 -0800 Subject: [PATCH 319/329] Remove unnecessary logging on BakeAssetTask --- assignment-client/src/assets/BakeAssetTask.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index 396857bf3a..fe717ab285 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -85,7 +85,6 @@ void BakeAssetTask::run() { auto files = _outputDir.entryInfoList(QDir::Files); QVector outputFiles; for (auto& file : files) { - qDebug() << " Output file: " << file.absoluteFilePath(); outputFiles.push_back(file.absoluteFilePath()); } From 65649fc331c7374ef16fefc90a47b5ac91c5d08f Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 8 Dec 2017 17:56:33 -0800 Subject: [PATCH 320/329] Remove _outputDir from BakeAssetTask --- assignment-client/src/assets/BakeAssetTask.cpp | 7 ++++--- assignment-client/src/assets/BakeAssetTask.h | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assignment-client/src/assets/BakeAssetTask.cpp b/assignment-client/src/assets/BakeAssetTask.cpp index fe717ab285..49322ca4cb 100644 --- a/assignment-client/src/assets/BakeAssetTask.cpp +++ b/assignment-client/src/assets/BakeAssetTask.cpp @@ -58,7 +58,6 @@ void BakeAssetTask::run() { } QString tempOutputDir = PathUtils::generateTemporaryDir(); - _outputDir = tempOutputDir; auto base = QFileInfo(QCoreApplication::applicationFilePath()).absoluteDir(); QString path = base.absolutePath() + "/oven"; QString extension = _assetPath.mid(_assetPath.lastIndexOf('.') + 1); @@ -82,7 +81,8 @@ void BakeAssetTask::run() { emit bakeFailed(_assetHash, _assetPath, errors); } } else if (exitCode == OVEN_STATUS_CODE_SUCCESS) { - auto files = _outputDir.entryInfoList(QDir::Files); + QDir outputDir = tempOutputDir; + auto files = outputDir.entryInfoList(QDir::Files); QVector outputFiles; for (auto& file : files) { outputFiles.push_back(file.absoluteFilePath()); @@ -95,7 +95,8 @@ void BakeAssetTask::run() { } else { QString errors; if (exitCode == OVEN_STATUS_CODE_FAIL) { - auto errorFilePath = _outputDir.absoluteFilePath("errors.txt"); + QDir outputDir = tempOutputDir; + auto errorFilePath = outputDir.absoluteFilePath("errors.txt"); QFile errorFile { errorFilePath }; if (errorFile.open(QIODevice::ReadOnly)) { errors = errorFile.readAll(); diff --git a/assignment-client/src/assets/BakeAssetTask.h b/assignment-client/src/assets/BakeAssetTask.h index edbce4c1d4..c73a8bff65 100644 --- a/assignment-client/src/assets/BakeAssetTask.h +++ b/assignment-client/src/assets/BakeAssetTask.h @@ -44,7 +44,6 @@ private: AssetHash _assetHash; AssetPath _assetPath; QString _filePath; - QDir _outputDir; std::unique_ptr _ovenProcess { nullptr }; std::atomic _wasAborted { false }; }; From 6f5028080bfddd89c91cd33438dd23724623e919 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 8 Dec 2017 18:23:23 -0800 Subject: [PATCH 321/329] Remove useless Wallet.buy() scripting endpoint --- .../scripting/WalletScriptingInterface.cpp | 28 ------------------- .../src/scripting/WalletScriptingInterface.h | 2 -- 2 files changed, 30 deletions(-) diff --git a/interface/src/scripting/WalletScriptingInterface.cpp b/interface/src/scripting/WalletScriptingInterface.cpp index 99fdd5fbde..8b4279af02 100644 --- a/interface/src/scripting/WalletScriptingInterface.cpp +++ b/interface/src/scripting/WalletScriptingInterface.cpp @@ -22,31 +22,3 @@ void WalletScriptingInterface::refreshWalletStatus() { auto wallet = DependencyManager::get(); wallet->getWalletStatus(); } - -static const QString CHECKOUT_QML_PATH = qApp->applicationDirPath() + "../../../qml/hifi/commerce/checkout/Checkout.qml"; -void WalletScriptingInterface::buy(const QString& name, const QString& id, const int& price, const QString& href) { - if (QThread::currentThread() != thread()) { - QMetaObject::invokeMethod(this, "buy", Q_ARG(const QString&, name), Q_ARG(const QString&, id), Q_ARG(const int&, price), Q_ARG(const QString&, href)); - return; - } - - auto tabletScriptingInterface = DependencyManager::get(); - auto tablet = dynamic_cast(tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system")); - - tablet->loadQMLSource(CHECKOUT_QML_PATH); - DependencyManager::get()->openTablet(); - - QQuickItem* root = nullptr; - if (tablet->getToolbarMode() || (!tablet->getTabletRoot() && !qApp->isHMDMode())) { - root = DependencyManager::get()->getRootItem(); - } else { - root = tablet->getTabletRoot(); - } - CheckoutProxy* checkout = new CheckoutProxy(root->findChild("checkout")); - - // Example: Wallet.buy("Test Flaregun", "0d90d21c-ce7a-4990-ad18-e9d2cf991027", 17, "http://mpassets.highfidelity.com/0d90d21c-ce7a-4990-ad18-e9d2cf991027-v1/flaregun.json"); - checkout->writeProperty("itemName", name); - checkout->writeProperty("itemId", id); - checkout->writeProperty("itemPrice", price); - checkout->writeProperty("itemHref", href); -} \ No newline at end of file diff --git a/interface/src/scripting/WalletScriptingInterface.h b/interface/src/scripting/WalletScriptingInterface.h index 038c580197..d7f9d9242e 100644 --- a/interface/src/scripting/WalletScriptingInterface.h +++ b/interface/src/scripting/WalletScriptingInterface.h @@ -41,8 +41,6 @@ public: Q_INVOKABLE uint getWalletStatus() { return _walletStatus; } void setWalletStatus(const uint& status) { _walletStatus = status; } - Q_INVOKABLE void buy(const QString& name, const QString& id, const int& price, const QString& href); - signals: void walletStatusChanged(); void walletNotSetup(); From eec4e966a75084d17cf684fda24a25f2246a7875 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Sun, 10 Dec 2017 10:13:49 -0800 Subject: [PATCH 322/329] Fix the linux build and correct the name of the property Intensity to Opacity --- .../scripting/SelectionScriptingInterface.cpp | 16 ++++++++-------- libraries/render/src/render/HighlightStyle.h | 2 ++ .../render/highlight/HighlightStyle.qml | 8 ++++---- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/interface/src/scripting/SelectionScriptingInterface.cpp b/interface/src/scripting/SelectionScriptingInterface.cpp index b7613cc3ae..a02d2c75f3 100644 --- a/interface/src/scripting/SelectionScriptingInterface.cpp +++ b/interface/src/scripting/SelectionScriptingInterface.cpp @@ -410,19 +410,19 @@ bool SelectionHighlightStyle::fromVariantMap(const QVariantMap& properties) { } } - auto intensityVariant = properties["outlineUnoccludedIntensity"]; + auto intensityVariant = properties["outlineUnoccludedOpacity"]; if (intensityVariant.isValid()) { _style._outlineUnoccluded.alpha = intensityVariant.toFloat(); } - intensityVariant = properties["outlineOccludedIntensity"]; + intensityVariant = properties["outlineOccludedOpacity"]; if (intensityVariant.isValid()) { _style._outlineOccluded.alpha = intensityVariant.toFloat(); } - intensityVariant = properties["fillUnoccludedIntensity"]; + intensityVariant = properties["fillUnoccludedOpacity"]; if (intensityVariant.isValid()) { _style._fillUnoccluded.alpha = intensityVariant.toFloat(); } - intensityVariant = properties["fillOccludedIntensity"]; + intensityVariant = properties["fillOccludedOpacity"]; if (intensityVariant.isValid()) { _style._fillOccluded.alpha = intensityVariant.toFloat(); } @@ -447,10 +447,10 @@ QVariantMap SelectionHighlightStyle::toVariantMap() const { properties["fillUnoccludedColor"] = xColorToVariant(xColorFromGlm(_style._fillUnoccluded.color)); properties["fillOccludedColor"] = xColorToVariant(xColorFromGlm(_style._fillOccluded.color)); - properties["outlineUnoccludedIntensity"] = _style._outlineUnoccluded.alpha; - properties["outlineOccludedIntensity"] = _style._outlineOccluded.alpha; - properties["fillUnoccludedIntensity"] = _style._fillUnoccluded.alpha; - properties["fillOccludedIntensity"] = _style._fillOccluded.alpha; + properties["outlineUnoccludedOpacity"] = _style._outlineUnoccluded.alpha; + properties["outlineOccludedOpacity"] = _style._outlineOccluded.alpha; + properties["fillUnoccludedOpacity"] = _style._fillUnoccluded.alpha; + properties["fillOccludedOpacity"] = _style._fillOccluded.alpha; properties["outlineWidth"] = _style._outlineWidth; properties["isOutlineSmooth"] = _style._isOutlineSmooth; diff --git a/libraries/render/src/render/HighlightStyle.h b/libraries/render/src/render/HighlightStyle.h index 981b43429a..4e6d43f911 100644 --- a/libraries/render/src/render/HighlightStyle.h +++ b/libraries/render/src/render/HighlightStyle.h @@ -23,6 +23,8 @@ namespace render { struct RGBA { glm::vec3 color{ 1.f, 0.7f, 0.2f }; float alpha{ 0.9f }; + + RGBA(const glm::vec3& c, float a) : color(c), alpha(a) {} }; RGBA _outlineUnoccluded{ { 1.f, 0.7f, 0.2f }, 0.9f }; diff --git a/scripts/developer/utilities/render/highlight/HighlightStyle.qml b/scripts/developer/utilities/render/highlight/HighlightStyle.qml index 189ac10b42..456c9bd7b6 100644 --- a/scripts/developer/utilities/render/highlight/HighlightStyle.qml +++ b/scripts/developer/utilities/render/highlight/HighlightStyle.qml @@ -64,10 +64,10 @@ Item { Repeater { model: [ - "Outline Unoccluded:outlineUnoccludedColor:outlineUnoccludedIntensity", - "Outline Occluded:outlineOccludedColor:outlineOccludedIntensity", - "Fill Unoccluded:fillUnoccludedColor:fillUnoccludedIntensity", - "Fill Occluded:fillOccludedColor:fillOccludedIntensity"] + "Outline Unoccluded:outlineUnoccludedColor:outlineUnoccludedOpacity", + "Outline Occluded:outlineOccludedColor:outlineOccludedOpacity", + "Fill Unoccluded:fillUnoccludedColor:fillUnoccludedOpacity", + "Fill Occluded:fillOccludedColor:fillOccludedOpacity"] Column { anchors.left: parent.left anchors.right: parent.right From bb888f2d4ce7cc6d7f271d48fb562851013602cd Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Sun, 10 Dec 2017 23:07:06 -0800 Subject: [PATCH 323/329] Replace the name opacity for alpha --- .../scripting/SelectionScriptingInterface.cpp | 16 ++++++++-------- .../src/scripting/SelectionScriptingInterface.h | 8 ++++---- .../developer/utilities/render/debugHighlight.js | 8 ++++---- .../render/highlight/HighlightStyle.qml | 8 ++++---- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/interface/src/scripting/SelectionScriptingInterface.cpp b/interface/src/scripting/SelectionScriptingInterface.cpp index a02d2c75f3..f534894145 100644 --- a/interface/src/scripting/SelectionScriptingInterface.cpp +++ b/interface/src/scripting/SelectionScriptingInterface.cpp @@ -410,19 +410,19 @@ bool SelectionHighlightStyle::fromVariantMap(const QVariantMap& properties) { } } - auto intensityVariant = properties["outlineUnoccludedOpacity"]; + auto intensityVariant = properties["outlineUnoccludedAlpha"]; if (intensityVariant.isValid()) { _style._outlineUnoccluded.alpha = intensityVariant.toFloat(); } - intensityVariant = properties["outlineOccludedOpacity"]; + intensityVariant = properties["outlineOccludedAlpha"]; if (intensityVariant.isValid()) { _style._outlineOccluded.alpha = intensityVariant.toFloat(); } - intensityVariant = properties["fillUnoccludedOpacity"]; + intensityVariant = properties["fillUnoccludedAlpha"]; if (intensityVariant.isValid()) { _style._fillUnoccluded.alpha = intensityVariant.toFloat(); } - intensityVariant = properties["fillOccludedOpacity"]; + intensityVariant = properties["fillOccludedAlpha"]; if (intensityVariant.isValid()) { _style._fillOccluded.alpha = intensityVariant.toFloat(); } @@ -447,10 +447,10 @@ QVariantMap SelectionHighlightStyle::toVariantMap() const { properties["fillUnoccludedColor"] = xColorToVariant(xColorFromGlm(_style._fillUnoccluded.color)); properties["fillOccludedColor"] = xColorToVariant(xColorFromGlm(_style._fillOccluded.color)); - properties["outlineUnoccludedOpacity"] = _style._outlineUnoccluded.alpha; - properties["outlineOccludedOpacity"] = _style._outlineOccluded.alpha; - properties["fillUnoccludedOpacity"] = _style._fillUnoccluded.alpha; - properties["fillOccludedOpacity"] = _style._fillOccluded.alpha; + properties["outlineUnoccludedAlpha"] = _style._outlineUnoccluded.alpha; + properties["outlineOccludedAlpha"] = _style._outlineOccluded.alpha; + properties["fillUnoccludedAlpha"] = _style._fillUnoccluded.alpha; + properties["fillOccludedAlpha"] = _style._fillOccluded.alpha; properties["outlineWidth"] = _style._outlineWidth; properties["isOutlineSmooth"] = _style._isOutlineSmooth; diff --git a/interface/src/scripting/SelectionScriptingInterface.h b/interface/src/scripting/SelectionScriptingInterface.h index 5c2bf2789f..8295375870 100644 --- a/interface/src/scripting/SelectionScriptingInterface.h +++ b/interface/src/scripting/SelectionScriptingInterface.h @@ -185,10 +185,10 @@ public: * - fillUnoccludedColor: {xColor} " * - fillOccludedColor: {xColor} " * - * - outlineUnoccludedOpacity: {float} Opacity value ranging from 0.0 (not visible) to 1.0 (fully opaque) for the specified highlight region - * - outlineOccludedOpacity: {float} " - * - fillUnoccludedOpacity: {float} " - * - fillOccludedOpacity: {float} " + * - outlineUnoccludedAlpha: {float} Alpha value ranging from 0.0 (not visible) to 1.0 (fully opaque) for the specified highlight region + * - outlineOccludedAlpha: {float} " + * - fillUnoccludedAlpha: {float} " + * - fillOccludedAlpha: {float} " * * - outlineWidth: {float} width of the outline expressed in pixels * - isOutlineSmooth: {bool} true to enable oultine smooth falloff diff --git a/scripts/developer/utilities/render/debugHighlight.js b/scripts/developer/utilities/render/debugHighlight.js index 22fa54b9d2..e70565cec2 100644 --- a/scripts/developer/utilities/render/debugHighlight.js +++ b/scripts/developer/utilities/render/debugHighlight.js @@ -109,13 +109,13 @@ isOutlineSmooth: true, outlineWidth: 5, outlineUnoccludedColor: {red: 255, green: 128, blue: 128}, - outlineUnoccludedIntensity: 0.88, + outlineUnoccludedAlpha: 0.88, outlineOccludedColor: {red: 255, green: 128, blue: 128}, - outlineOccludedIntensity:0.5, + outlineOccludedAlpha:0.5, fillUnoccludedColor: {red: 26, green: 0, blue: 0}, - fillUnoccludedIntensity: 0.0, + fillUnoccludedAlpha: 0.0, fillOccludedColor: {red: 26, green: 0, blue: 0}, - fillOccludedIntensity: 0.0 + fillOccludedAlpha: 0.0 } Selection.enableListHighlight(HoveringList, hoveringStyle) diff --git a/scripts/developer/utilities/render/highlight/HighlightStyle.qml b/scripts/developer/utilities/render/highlight/HighlightStyle.qml index 456c9bd7b6..371b7e81f7 100644 --- a/scripts/developer/utilities/render/highlight/HighlightStyle.qml +++ b/scripts/developer/utilities/render/highlight/HighlightStyle.qml @@ -64,10 +64,10 @@ Item { Repeater { model: [ - "Outline Unoccluded:outlineUnoccludedColor:outlineUnoccludedOpacity", - "Outline Occluded:outlineOccludedColor:outlineOccludedOpacity", - "Fill Unoccluded:fillUnoccludedColor:fillUnoccludedOpacity", - "Fill Occluded:fillOccludedColor:fillOccludedOpacity"] + "Outline Unoccluded:outlineUnoccludedColor:outlineUnoccludedAlpha", + "Outline Occluded:outlineOccludedColor:outlineOccludedAlpha", + "Fill Unoccluded:fillUnoccludedColor:fillUnoccludedAlpha", + "Fill Occluded:fillOccludedColor:fillOccludedAlpha"] Column { anchors.left: parent.left anchors.right: parent.right From cc4b2666478a9c63f6793efa1f2137cb1150132a Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 11 Dec 2017 00:31:54 -0800 Subject: [PATCH 324/329] Add names to objects of the selection, remove comments in shader and fix one more warning on linux --- .../scripting/SelectionScriptingInterface.cpp | 2 +- libraries/render-utils/src/Highlight.slh | 2 -- .../developer/utilities/render/highlight.qml | 27 ++++++++++++++----- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/interface/src/scripting/SelectionScriptingInterface.cpp b/interface/src/scripting/SelectionScriptingInterface.cpp index f534894145..233e61c8ae 100644 --- a/interface/src/scripting/SelectionScriptingInterface.cpp +++ b/interface/src/scripting/SelectionScriptingInterface.cpp @@ -283,7 +283,7 @@ bool SelectionScriptingInterface::removeListFromMap(const QString& listName) { bool removed = false; { QWriteLocker lock(&_selectionListsLock); - bool removed = _selectedItemsListMap.remove(listName); + removed = _selectedItemsListMap.remove(listName); } if (removed) { onSelectedItemsListChanged(listName); diff --git a/libraries/render-utils/src/Highlight.slh b/libraries/render-utils/src/Highlight.slh index 207276014c..e42ac6833c 100644 --- a/libraries/render-utils/src/Highlight.slh +++ b/libraries/render-utils/src/Highlight.slh @@ -78,9 +78,7 @@ void main(void) { { outlinedDepth = texture(highlightedDepthMap, uv).x; float touch = (outlinedDepth < FAR_Z) ? 1.0 : 0.0; - //sumOutlineDepth = min(outlinedDepth, sumOutlineDepth); sumOutlineDepth = max(outlinedDepth * touch, sumOutlineDepth); - // sumOutlineDepth += (outlinedDepth * touch); intensity += touch; weight += 1.f; } diff --git a/scripts/developer/utilities/render/highlight.qml b/scripts/developer/utilities/render/highlight.qml index a4e819937d..88d6a807ae 100644 --- a/scripts/developer/utilities/render/highlight.qml +++ b/scripts/developer/utilities/render/highlight.qml @@ -136,13 +136,26 @@ Item { function resetSelectionView() { myModel.clear() var entities = Selection.getSelectedItemsList(root.listName)["entities"] - if (entities === undefined) { - return; + if (entities !== undefined) { + myModel.append({ "objectID": "Entities" }) + for (var i = 0; i < entities.length; i++) { + myModel.append({ "objectID": JSON.stringify(entities[i]) }) + } + } + var overlays = Selection.getSelectedItemsList(root.listName)["overlays"] + if (overlays !== undefined) { + myModel.append({ "objectID": "Overlays" }) + for (var i = 0; i < overlays.length; i++) { + myModel.append({ "objectID": JSON.stringify(overlays[i]) }) + } + } + var avatars = Selection.getSelectedItemsList(root.listName)["avatars"] + if (avatars !== undefined) { + myModel.append({ "objectID": "Avatars" }) + for (var i = 0; i < avatars.length; i++) { + myModel.append({ "objectID": JSON.stringify(avatars[i]) }) + } } - var fLen = entities.length; - for (var i = 0; i < fLen; i++) { - myModel.append({ "objectID": JSON.stringify(entities[i]) }) - } } ListModel { @@ -153,7 +166,7 @@ Item { id: myDelegate Row { id: fruit - Text { text: JSON.stringify(objectID) } + Text { text: objectID } } } From d1cd9f5c6b1661e63c719b71263c4ab719492762 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 11 Dec 2017 02:21:09 -0800 Subject: [PATCH 325/329] adding correct support for the meta item fetch subItems for Overlays and specifically for ModelOverlay which fixes the highlight on Overlays --- interface/src/ui/overlays/Base3DOverlay.h | 2 ++ interface/src/ui/overlays/ModelOverlay.cpp | 26 +++++++++++++++++++ interface/src/ui/overlays/ModelOverlay.h | 8 ++++++ interface/src/ui/overlays/Overlay.h | 3 +++ interface/src/ui/overlays/Overlay2D.h | 2 ++ interface/src/ui/overlays/OverlaysPayload.cpp | 6 +++++ 6 files changed, 47 insertions(+) diff --git a/interface/src/ui/overlays/Base3DOverlay.h b/interface/src/ui/overlays/Base3DOverlay.h index 556399c741..6323ff9dc8 100644 --- a/interface/src/ui/overlays/Base3DOverlay.h +++ b/interface/src/ui/overlays/Base3DOverlay.h @@ -35,6 +35,8 @@ public: // getters virtual bool is3D() const override { return true; } + virtual uint32_t fetchMetaSubItems(render::ItemIDs& subItems) const override { subItems.push_back(getRenderItemID()); return (uint32_t) subItems.size(); } + // TODO: consider implementing registration points in this class glm::vec3 getCenter() const { return getWorldPosition(); } diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index f27e26280a..0846599728 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -79,6 +79,12 @@ void ModelOverlay::update(float deltatime) { if (_model->needsFixupInScene()) { _model->removeFromScene(scene, transaction); _model->addToScene(scene, transaction); + + auto newRenderItemIDs{ _model->fetchRenderItemIDs() }; + transaction.updateItem(getRenderItemID(), [newRenderItemIDs](Overlay& data) { + auto modelOverlay = static_cast(&data); + modelOverlay->setSubRenderItemIDs(newRenderItemIDs); + }); } if (_visibleDirty) { _visibleDirty = false; @@ -104,6 +110,10 @@ bool ModelOverlay::addToScene(Overlay::Pointer overlay, const render::ScenePoint void ModelOverlay::removeFromScene(Overlay::Pointer overlay, const render::ScenePointer& scene, render::Transaction& transaction) { Volume3DOverlay::removeFromScene(overlay, scene, transaction); _model->removeFromScene(scene, transaction); + transaction.updateItem(getRenderItemID(), [](Overlay& data) { + auto modelOverlay = static_cast(&data); + modelOverlay->clearSubRenderItemIDs(); + }); } void ModelOverlay::setVisible(bool visible) { @@ -529,3 +539,19 @@ void ModelOverlay::copyAnimationJointDataToModel(QVector jointsData) _updateModel = true; } +void ModelOverlay::clearSubRenderItemIDs() { + _subRenderItemIDs.clear(); +} + +void ModelOverlay::setSubRenderItemIDs(const render::ItemIDs& ids) { + _subRenderItemIDs = ids; +} + +uint32_t ModelOverlay::fetchMetaSubItems(render::ItemIDs& subItems) const { + if (_model) { + auto metaSubItems = _subRenderItemIDs; + subItems.insert(subItems.end(), metaSubItems.begin(), metaSubItems.end()); + return (uint32_t)metaSubItems.size(); + } + return 0; +} diff --git a/interface/src/ui/overlays/ModelOverlay.h b/interface/src/ui/overlays/ModelOverlay.h index c4506d9621..4f7f1e0cae 100644 --- a/interface/src/ui/overlays/ModelOverlay.h +++ b/interface/src/ui/overlays/ModelOverlay.h @@ -30,6 +30,12 @@ public: virtual void update(float deltatime) override; virtual void render(RenderArgs* args) override {}; + + virtual uint32_t fetchMetaSubItems(render::ItemIDs& subItems) const override; + + void clearSubRenderItemIDs(); + void setSubRenderItemIDs(const render::ItemIDs& ids); + void setProperties(const QVariantMap& properties) override; QVariant getProperty(const QString& property) override; virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, @@ -74,6 +80,8 @@ private: ModelPointer _model; QVariantMap _modelTextures; + render::ItemIDs _subRenderItemIDs; + QUrl _url; bool _updateModel { false }; bool _scaleToFit { false }; diff --git a/interface/src/ui/overlays/Overlay.h b/interface/src/ui/overlays/Overlay.h index 39208f01a0..806fc1aa14 100644 --- a/interface/src/ui/overlays/Overlay.h +++ b/interface/src/ui/overlays/Overlay.h @@ -53,6 +53,8 @@ public: virtual const render::ShapeKey getShapeKey() { return render::ShapeKey::Builder::ownPipeline(); } + virtual uint32_t fetchMetaSubItems(render::ItemIDs& subItems) const { return 0; } + // getters virtual QString getType() const = 0; virtual bool is3D() const = 0; @@ -130,6 +132,7 @@ namespace render { template <> int payloadGetLayer(const Overlay::Pointer& overlay); template <> void payloadRender(const Overlay::Pointer& overlay, RenderArgs* args); template <> const ShapeKey shapeGetShapeKey(const Overlay::Pointer& overlay); + template <> uint32_t metaFetchMetaSubItems(const Overlay::Pointer& overlay, ItemIDs& subItems); } Q_DECLARE_METATYPE(OverlayID); diff --git a/interface/src/ui/overlays/Overlay2D.h b/interface/src/ui/overlays/Overlay2D.h index a1efe8a6de..3175df92f1 100644 --- a/interface/src/ui/overlays/Overlay2D.h +++ b/interface/src/ui/overlays/Overlay2D.h @@ -26,6 +26,8 @@ public: virtual bool is3D() const override { return false; } + virtual uint32_t fetchMetaSubItems(render::ItemIDs& subItems) const override { subItems.push_back(getRenderItemID()); return 1; } + // getters int getX() const { return _bounds.x(); } int getY() const { return _bounds.y(); } diff --git a/interface/src/ui/overlays/OverlaysPayload.cpp b/interface/src/ui/overlays/OverlaysPayload.cpp index 8d3e514a0f..fceb261503 100644 --- a/interface/src/ui/overlays/OverlaysPayload.cpp +++ b/interface/src/ui/overlays/OverlaysPayload.cpp @@ -87,4 +87,10 @@ namespace render { template <> const ShapeKey shapeGetShapeKey(const Overlay::Pointer& overlay) { return overlay->getShapeKey(); } + + + template <> uint32_t metaFetchMetaSubItems(const Overlay::Pointer& overlay, ItemIDs& subItems) { + return overlay->fetchMetaSubItems(subItems); + } } + From b4f74330424d871234c2097738127e40dec8ac33 Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 11 Dec 2017 09:26:43 -0800 Subject: [PATCH 326/329] removing .f for a float in shader --- libraries/render-utils/src/Highlight.slh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/Highlight.slh b/libraries/render-utils/src/Highlight.slh index e42ac6833c..f4d4ad0e04 100644 --- a/libraries/render-utils/src/Highlight.slh +++ b/libraries/render-utils/src/Highlight.slh @@ -80,7 +80,7 @@ void main(void) { float touch = (outlinedDepth < FAR_Z) ? 1.0 : 0.0; sumOutlineDepth = max(outlinedDepth * touch, sumOutlineDepth); intensity += touch; - weight += 1.f; + weight += 1.0; } uv.x += deltaUv.x; } From 1008175a923da1e03ec554c127797c2732b08733 Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 11 Dec 2017 09:28:33 -0800 Subject: [PATCH 327/329] Removing commented code --- libraries/render-utils/src/HighlightEffect.cpp | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/libraries/render-utils/src/HighlightEffect.cpp b/libraries/render-utils/src/HighlightEffect.cpp index d1fcab67b6..fee1f4a568 100644 --- a/libraries/render-utils/src/HighlightEffect.cpp +++ b/libraries/render-utils/src/HighlightEffect.cpp @@ -454,23 +454,6 @@ void SelectionToHighlight::run(const render::RenderContextPointer& renderContext } } } - /* - for (auto i = 0; i < HighlightSharedParameters::MAX_PASS_COUNT; i++) { - std::ostringstream stream; - if (i > 0) { - stream << "highlightList" << i; - } else { - stream << "contextOverlayHighlightList"; - } - auto selectionName = stream.str(); - if (!scene->isSelectionEmpty(selectionName)) { - auto highlightId = highlightStage->getHighlightIdBySelection(selectionName); - if (!render::HighlightStage::isIndexInvalid(highlightId)) { - _sharedParameters->_highlightIds[outputs.size()] = highlightId; - outputs.emplace_back(selectionName); - } - } - }*/ } void ExtractSelectionName::run(const render::RenderContextPointer& renderContext, const Inputs& inputs, Outputs& outputs) { From 63fb9b5503ff38e3ed4fcdd06a0080bf181a27e0 Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 11 Dec 2017 09:30:31 -0800 Subject: [PATCH 328/329] fix float literal syntax --- libraries/render/src/render/HighlightStyle.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/render/src/render/HighlightStyle.h b/libraries/render/src/render/HighlightStyle.h index 4e6d43f911..8bef5c33c3 100644 --- a/libraries/render/src/render/HighlightStyle.h +++ b/libraries/render/src/render/HighlightStyle.h @@ -21,14 +21,14 @@ namespace render { class HighlightStyle { public: struct RGBA { - glm::vec3 color{ 1.f, 0.7f, 0.2f }; + glm::vec3 color{ 1.0f, 0.7f, 0.2f }; float alpha{ 0.9f }; RGBA(const glm::vec3& c, float a) : color(c), alpha(a) {} }; - RGBA _outlineUnoccluded{ { 1.f, 0.7f, 0.2f }, 0.9f }; - RGBA _outlineOccluded{ { 1.f, 0.7f, 0.2f }, 0.9f }; + RGBA _outlineUnoccluded{ { 1.0f, 0.7f, 0.2f }, 0.9f }; + RGBA _outlineOccluded{ { 1.0f, 0.7f, 0.2f }, 0.9f }; RGBA _fillUnoccluded{ { 0.2f, 0.7f, 1.0f }, 0.0f }; RGBA _fillOccluded{ { 0.2f, 0.7f, 1.0f }, 0.0f }; From db6505493f212347dc93891dee060aaf00474732 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Mon, 11 Dec 2017 14:04:39 -0800 Subject: [PATCH 329/329] fix avatar-mixer crash: don't use global callback --- .../src/avatars/AvatarMixerSlave.cpp | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/assignment-client/src/avatars/AvatarMixerSlave.cpp b/assignment-client/src/avatars/AvatarMixerSlave.cpp index 9ea1ed3637..47a81ba1fe 100644 --- a/assignment-client/src/avatars/AvatarMixerSlave.cpp +++ b/assignment-client/src/avatars/AvatarMixerSlave.cpp @@ -33,11 +33,6 @@ #include "AvatarMixerClientData.h" #include "AvatarMixerSlave.h" -namespace PrioritySortUtil { - // we declare this callback here but override it later - std::function getAvatarAgeCallback = [] (const AvatarSharedPointer& avatar) { return 0; }; -} - void AvatarMixerSlave::configure(ConstIter begin, ConstIter end) { _begin = begin; _end = end; @@ -191,6 +186,7 @@ void AvatarMixerSlave::broadcastAvatarDataToAgent(const SharedNodePointer& node) // setup list of AvatarData as well as maps to map betweeen the AvatarData and the original nodes std::vector avatarsToSort; std::unordered_map avatarDataToNodes; + std::unordered_map avatarEncodeTimes; std::for_each(_begin, _end, [&](const SharedNodePointer& otherNode) { // make sure this is an agent that we have avatar data for before considering it for inclusion if (otherNode->getType() == NodeType::Agent @@ -200,34 +196,29 @@ void AvatarMixerSlave::broadcastAvatarDataToAgent(const SharedNodePointer& node) AvatarSharedPointer otherAvatar = otherNodeData->getAvatarSharedPointer(); avatarsToSort.push_back(otherAvatar); avatarDataToNodes[otherAvatar] = otherNode; + QUuid id = otherAvatar->getSessionUUID(); + avatarEncodeTimes[id] = nodeData->getLastOtherAvatarEncodeTime(id); } }); - // now that we've assembled the avatarDataToNodes map we can replace PrioritySortUtil::getAvatarAgeCallback - // with the true implementation - PrioritySortUtil::getAvatarAgeCallback = [&] (const AvatarSharedPointer& avatar) { - auto avatarNode = avatarDataToNodes[avatar]; - assert(avatarNode); // we can't have gotten here without the avatarData being a valid key in the map - return nodeData->getLastOtherAvatarEncodeTime(avatarNode->getUUID()); - }; - class SortableAvatar: public PrioritySortUtil::Sortable { public: SortableAvatar() = delete; - SortableAvatar(const AvatarSharedPointer& avatar) : _avatar(avatar) {} + SortableAvatar(const AvatarSharedPointer& avatar, uint64_t lastEncodeTime) + : _avatar(avatar), _lastEncodeTime(lastEncodeTime) {} glm::vec3 getPosition() const override { return _avatar->getWorldPosition(); } float getRadius() const override { glm::vec3 nodeBoxHalfScale = (_avatar->getWorldPosition() - _avatar->getGlobalBoundingBoxCorner() * _avatar->getSensorToWorldScale()); return glm::max(nodeBoxHalfScale.x, glm::max(nodeBoxHalfScale.y, nodeBoxHalfScale.z)); } uint64_t getTimestamp() const override { - // use the callback implemented above - return PrioritySortUtil::getAvatarAgeCallback(_avatar); + return _lastEncodeTime; } const AvatarSharedPointer& getAvatar() const { return _avatar; } private: AvatarSharedPointer _avatar; + uint64_t _lastEncodeTime; }; // prepare to sort @@ -322,7 +313,12 @@ void AvatarMixerSlave::broadcastAvatarDataToAgent(const SharedNodePointer& node) if (!shouldIgnore) { // sort this one for later - sortedAvatars.push(SortableAvatar(avatar)); + uint64_t lastEncodeTime = 0; + std::unordered_map::const_iterator itr = avatarEncodeTimes.find(avatar->getSessionUUID()); + if (itr != avatarEncodeTimes.end()) { + lastEncodeTime = itr->second; + } + sortedAvatars.push(SortableAvatar(avatar, lastEncodeTime)); } }