ret
	.p2align 3
.L300:
	str	xzr, [x22]
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 144
	ret
.L311:
	ldr	x0, [x24, 2312]
	mov	w1, 5
	bl	BsGet
	uxtb	w20, w0
	ldr	x0, [x24, 2312]
	mov	w1, 3
	bl	BsGet
	uxtb	w0, w0
	cmp	w0, 3
	ccmp	w20, 6, 0, eq
	beq	.L312
	cmp	w20, 2
	cset	w1, eq
	cmp	w0, wzr
	cset	w2, eq
	tst	w1, w2
	bne	.L313
	cmp	w0, 1
	cset	w0, eq
	tst	w1, w0
	bne	.L314
	sub	w26, w26, #18
	str	w26, [x22, 24]
.L293:
	mov	w19, 0
	cbz	w26, .L300
	.p2align 2
.L306:
	ldr	x0, [x24, 2312]
	mov	w1, 8
	add	w19, w19, 1
	bl	BsGet
	ldr	w0, [x22, 24]
	cmp	w0, w19
	bhi	.L306
	b	.L302
.L314:
	ldr	x0, [x24, 2312]
	mov	w1, 8
	sub	w26, w26, #19
	bl	BsGet
	mov	w19, w0
	ldr	x0, [x24, 2312]
	mov	w1, 8
	bl	BsGet
	ubfiz	w0, w0, 8, 8
	add	w19, w0, w19, uxtb
	str	w26, [x22, 24]
	str	w19, [x22, 68]
	b	.L293
.L303:
	mov	w0, -1
	b	.L285
.L312:
	ldr	x0, [x24, 2312]
	mov	w1, 2
	bl	BsGet
	strb	w0, [x22, 35]
	mov	w1, 2
	ldr	x0, [x24, 2312]
	bl	BsGet
	strb	w0, [x22, 34]
	mov	w1, w19
	ldr	x0, [x24, 2312]
	bl	BsGet
	strb	w0, [x22, 33]
	mov	w1, w19
	ldr	x0, [x24, 2312]
	bl	BsGet
	strb	w0, [x22, 32]
	mov	w1, 2
	ldr	x0, [x24, 2312]
	bl	BsGet
	ldrb	w0, [x22, 33]
	mov	x2, 28
	ldr	x3, .LC108
	cbnz	w0, .L291
	ldr	x3, [x3, 104]
	add	x1, x29, 80
	add	x0, x22, 40
	blr	x3
.L292:
	ldr	x0, [x24, 2312]
	mov	w1, 8
	sub	w26, w26, #21
	bl	BsGet
	uxtb	w0, w0
	lsl	w2, w0, 3
	mov	w1, 8
	sub	w2, w2, w0
	add	w0, w0, w2, lsl 3
	sub


es.Reals.Base.html#4653" class="InductiveConstructor">neg  : Identifier (Op₁ REAL)
  sub  : Identifier (Op₂ REAL)
  add  : Identifier (Op₂ REAL)
  mul  : Identifier (Op₂ REAL)
  div  : Identifier (Op₂ REAL)
  leq  : <a id="4815" href="SMT.Theories.Reals.Base.html#44


5 19.48s26.25-8.72 26.25-19.48z" style="fill:#5a5a5a;"/>';
  sP['02']?['head'] = head;
  sP['02']?['mouth'] =
      '<path d="m115.5 161.71c-8.24 0-14.46-4.15-19.19-11.25 3.37-2.44 6.51-4.57 10-6.79a5.25 5.25 0 0 1 5.48-0.17 28.19 28.19 0 0 1 3.68 2.75 28.19 28.19 0 0 1 3.68-2.75 5.25 5.25 0 0 1 5.48 0.17c3.52 2.22 6.66 4.35 10 6.79-4.74 7.1-11 11.25-19.19 11.25z" style="fill:#5a5a5a;"/>';
  sP['02']?['eyes'] =
      '<path d="m172.7 90.75h-6.54c-0.14-0.1-0.26-0.22-0.4-0.3-4.48-2.76-22.75-2.11-33.71 1.2-1 0.3-1.91 0.61-2.75 0.94-1.8937 0.79244-3.8739 1.3597-5.9 1.69-5.5051 0.79002-10.403 0.79002-15.908 0-2.0261-0.33034-4.0063-0.89756-5.9-1.69-0.84-0.33-1.76-0.64-2.75-0.94-11-3.31-29.23-4-33.71-1.2-0.13832 0.08869-0.2688 0.18906-0.39 0.3h-6.55c-1.1046 0-2 0.89543-2 2v4.66c-0.0013 0.98185 0.49088 1.8986 1.31 2.44l1.9 1.27c0.59238 0.38889 0.93475 1.0622 0.9 1.77-0.14175 5.4854 0.88072 10.939 3 16 3.58 8.38 16 10.9 24.93 10.9 2.6976 0.0771 5.3921-0.2361 8-0.93 4.35-1.43 8.24-7.36 10.45-12.42 1.7607-3.8506 2.7493-8.009 2.91-12.24 7.3e-4 -0.7138 0.38183-1.3731 1-1.73 3.2281-1.951 6.5798-1.951 9.8079 0 0.61817 0.3569 0.99927 1.0162 1 1.73 0.16067 4.231 1.1493 8.3894 2.91 12.24 2.21 5.06 6.1 11 10.45 12.42 2.6079 0.6939 5.3024 1.0071 8 0.93 8.92 0 21.35-2.52 24.93-10.9 2.1193-5.0614 3.1418-10.515 3-16-0.0348-0.70778 0.30762-1.3811 0.9-1.77l1.9-1.27c0.81913-0.54136 1.3113-1.4582 1.31-2.44v-4.6c0.0336-1.1048-0.83521-2.0274-1.94-2.06z" style="fill:#1a1a1a;' +
          str +
          '2.5;stroke:#b3b3b3;"/>';
  sP['02']?['top'] =
      '<path d="m124.22 13.61c-19.783 0-36.945 8.0887-39.695 24.106-15.332 0.23539-31.831 2.7712


eMock<Random::MockRandomGenerator> random_;
  std::unique_ptr<ConnectionManager> conn_manager_;
  MockSerializer* custom_serializer_{};
  MockProtocol* custom_protocol_{};
};

TEST_F(ConnectionManagerTest, OnDataHandlesRequestTwoWay) {
  initializeFilter();
  writeHessianRequestMessage(buffer_, false, false, 0x0F);

  EXPECT_EQ(conn_manager_->onData(buffer_, false), Network::FilterStatus::StopIteration);
  EXPECT_EQ(1U, store_.counter("test.request").value());
  EXPECT_EQ(1U, store_.counter("test.request_twoway").value());
  EXPECT_EQ(0U, store_.counter("test.request_oneway").value());
  EXPECT_EQ(0U, store_.counter("test.request_event").value());
  EXPECT_EQ(0U, store_.counter("test.request_decoding_error").value());
  EXPECT_EQ(1U, store_.gauge("test.request_active", Stats::Gauge::ImportMode::Accumulate).value());
  EXPECT_EQ(0U, store_.counter("test.response").value());
}

TEST_F(ConnectionManagerTest, OnDataHandlesRequestOneWay) {
  initializeFilter();
  writeHessianRequestMessage(buffer_, true, false, 0x0F);

  EXPECT_EQ(conn_manager_->onData(buffer_, false), Network::FilterStatus::StopIteration);
  EXPECT_EQ(1U, store_.counter("test.request").value());
  EXPECT_EQ(0U, store_.counter("test.request_twoway").value());
  EXPECT_EQ(1U, store_.counter("test.request_oneway").value());
  EXPECT_EQ(0U, store_.counter("test.request_event").value());
  EXPECT_EQ(0U, store_.counter("test.request_decoding_error").value());
  EXPECT_EQ(1U, store_.gauge("test.request_active", Stats::Gauge::ImportMode::Accumulate).value());
  EXPECT_EQ(0U, store_.counter("test.response").value());

  filter_callbacks_.connection_.dispatcher_.clearDeferredDeleteList();
  EXPECT_EQ(0U, store_.gauge("test.request_active", Stats::Gauge::ImportMode::Accumulate).value());
}

TEST_F(ConnectionManagerTest, OnDataHandlesHeartbeatEvent) {
  initializeFilter();
  writeHessianHeartbeatRequestMessage(buffer_, 0x0F);

  EXPECT_CALL(filter_callbacks_.connection_, write(_, false))
      .WillOnce(Invoke([&](Buffer::Instance& buffer, bool) -> void {
        ProtocolPtr protocol = conn_manager_->config().createProtocol();
        MessageMetadataSharedPtr metadata(std::make_shared<MessageMetadata>());
        auto result = protocol->decodeHeader(buffer, metadata);
        EXPECT_TRUE(result.second);
        const DubboProxy::ContextImpl& ctx = *static_cast<const ContextImpl*>(result.first.get());
        EXPECT_TRUE(ctx.isHeartbeat());
        EXPECT_TRUE(metadata->hasResponseStatus());
        EXPECT_FALSE(metadata->isTwoWay());
        EXPECT_EQ(ProtocolType::Dubbo, metadata->protocolType());
        EXPECT_EQ(metadata->responseStatus(), ResponseStatus::Ok);
        EXPECT_EQ(metadata->messageType(), MessageType::HeartbeatResponse);
        buffer.drain(ctx.headerSize());
      }));

  EXPECT_EQ(conn_manager_->onData(buffer_, false), Network::FilterStatus::StopIteration);
  EXPECT_EQ(0U, buffer_.length());
  filter_callbacks_.connection_.dispatcher_.clearDeferredDeleteList();

  EXPECT_EQ(0U, store_.counter("test.request").value());
  EXPECT_EQ(1U, store_.counter("test.request_event").value


2.3.3"><times id="S4.Ex81.m1.1.2.3.3.1.cmml" xref="S4.Ex81.m1.1.2.3.3.1"></times><ci id="S4.Ex81.m1.1.2.3.3.2.cmml" xref="S4.Ex81.m1.1.2.3.3.2">𝜀</ci><apply id="S4.Ex81.m1.1.2.3.3.3.cmml" xref="S4.Ex81.m1.1.2.3.3.3"><csymbol cd="ambiguous" id="S4.Ex81.m1.1.2.3.3.3.1.cmml" xref="S4.Ex81.m1.1.2.3.3.3">subscript</csymbol><apply id="S4.Ex81.m1.1.2.3.3.3.2.cmml" xref="S4.Ex81.m1.1.2.3.3.3"><csymbol cd="ambiguous" id="S4.Ex81.m1.1.2.3.3.3.2.1.cmml" xref="S4.Ex81.m1.1.2.3.3.3">superscript</csymbol><apply id="S4.Ex81.m1.1.2.3.3.3.2.2.1.cmml" xref="S4.Ex81.m1.1.2.3.3.3.2.2.2"><csymbol cd="latexml" id="S4.Ex81.m1.1.2.3.3.3.2.2.1.1.cmml" xref="S4.Ex81.m1.1.2.3.3.3.2.2.2.1">delimited-∥∥</csymbol><ci id="S4.Ex81.m1.1.1.cmml" xref="S4.Ex81.m1.1.1">𝐏</ci></apply><ci id="S4.Ex81.m1.1.2.3.3.3.2.3.cmml" xref="S4.Ex81.m1.1.2.3.3.3.2.3">𝑞</ci></apply><apply id="S4.Ex81.m1.1.2.3.3.3.3.cmml" xref="S4.Ex81.m1.1.2.3.3.3.3"><csymbol cd="ambiguous" id="S4.Ex81.m1.1.2.3.3.3.3.1.cmml" xref="S4.Ex81.m1.1.2.3.3.3.3">superscript</csymbol><ci id="S4.Ex81.m1.1.2.3.3.3.3.2.cmml" xref="S4.Ex81.m1.1.2.3.3.3.3.2">𝐿</ci><ci id="S4.Ex81.m1.1.2.3.3.3.3.3.cmml" xref="S4.Ex81.m1.1.2.3.3.3.3.3">𝑞</ci></apply></apply></apply></apply></apply></annotation-xml><annotation encoding="application/x-tex" id="S4.Ex81.m1.1c">\displaystyle\geq C+\varepsilon\lVert\mathbf{P}\rVert^{q}_{L^{q}}</annotation><annotation encoding="application/x-llamapun" id="S4.Ex81.m1.1d">≥ italic_C + italic_ε ∥ bold_P ∥ start_POSTSUPERSCRIPT italic_q end_POSTSUPERSCRIPT start_POST


.47.47-.47h4.06c.26 0 .47.21.47.47v.31c0 .26-.21.47-.47.47H9.97a.47.47 0 0 1-.47-.47v-.31Zm11.25-7.97H3.25C2.55 3.25 2 3.81 2 4.5v1.88c0 .34.28.62.63.62h18.75c.34 0 .62-.28.62-.63V4.5c0-.7-.56-1.25-1.25-1.25Z"/></svg>'},41659:h=>{h.exports='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="currentColor" d="M4.5 20.13A1.87 1.87 0 0 0 6.38 22h11.25a1.87 1.87 0 0 0 1.87-1.88V7h-15v13.13Zm10.63-10a.62.62 0 1 1 1.24 0v8.74a.62.62 0 0 1-1.25 0v-8.75Zm-3.76 0a.62.62 0 1 1 1.26 0v8.74a.62.62 0 0 1-1.26 0v-8.75Zm-3.74 0a.62.62 0 0 1 1.25 0v8.74a.62.62 0 1 1-1.26 0v-8.75Zm12.5-6.88h-4.7l-.36-.73a.94.94 0 0 0-.84-.52H9.77a.93.93 0 0 0-.84.52l-.37.73H3.87a.62.62 0 0 0-.62.63v1.25a.62.62 0 0 0 .63.62h16.25a.62.62 0 0 0 .62-.62V3.88a.63.63 0 0 0-.63-.63Z"/></svg>'},11632:h=>{h.exports='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="currentColor" d="m21.45 7.55-1.8 1.8a.47.47 0 0 1-.67 0L14.65 5a.47.47 0 0 1 0-.66l1.8-1.8a1.88 1.88 0 0 1 2.65 0l2.35 2.35c.73.73.73 1.91 0 2.65ZM13.1 5.9 2.84 16.15l-.83 4.75a.94.94 0 0 0 1.1 1.09l4.74-.84L18.1 10.9a.47.47 0 0 0 0-.67L13.77 5.9a.47.47 0 0 0-.67 0Zm-6.25 9.37a.54.54 0 0 1 0-.77l6.01-6.01a.54.54 0 0 1 .78 0c.21.21.21.55 0 .77l-6.02 6.01a.54.54 0 0 1-.77 0Zm-1.41 3.29H7.3v1.42l-2.52.44-1.21-1.22.44-2.51h1.42v1.87Z"/></svg>'},46270:h=>{h.exports='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="currentColor" d="M16.38 2H7.63c-1.04 0-1.88.84-1.88 1.88v16.25c0 1.03.84 1.87 1.88 1.87h8.75c1.03 0 1.87-.84 1.87-1.88V3.88c0-1.03-.84-1.87-1.88-1.87ZM12 20.75a1.25 1.25 0 1 1 0-2.5 1.25 1.25 0 0 1 0 2.5Zm4.38


last) {
        "internal error yxga5xy9bm: " +
          "instant.epochSecond out of range by " +
          "${instant.epochSecond - validEpochSecondRange.last}: ${instant.epochSecond} (" +
          "validEpochSecondRange.last=${validEpochSecondRange.last}, " +
          "year=$year, month=$month, day=$day, " +
          "hour=$hour, minute=$minute, second=$second, " +
          "nanosecond=$nanosecond timeOffset=$timeOffset, " +
          "minTimeZoneOffset=$minTimeZoneOffset, maxTimeZoneOffset=$maxTimeZoneOffset)"
      }

      val string = buildString {
        append(year)
        append('-')
        append("$month".padStart(2, '0'))
        append('-')
        append("$day".padStart(2, '0'))

        append(t)

        append("$hour".padStart(2, '0'))
        append(':')
        append("$minute".padStart(2, '0'))
        append(':')
        append("$second".padStart(2, '0'))

        if (nanosecond !== null) {
          append('.')
          append(nanosecond.string)
        }

        append(timeOffset.rfc3339String)
      }

      InstantTestCase.from(name = "arbitrary", instant = instant, string = string)
    }
  }

  fun timeOffset(
    min: TimeOffset.HhMm?,
    max: TimeOffset.HhMm?,
  ): Arb<TimeOffset> = Arb.choice(timeOffsetUtc(), timeOffsetHhMm(min = min, max = max))

  fun timeOffsetUtc(
    case: Arb<TimeOffset.Utc.Case> = Arb.enum(),
  ): Arb<TimeOffset.Utc> = arbitrary { TimeOffset.Utc(case.bind()) }

  fun timeOffsetHhMm(
    sign: Arb<TimeOffset.HhMm.Sign> = Arb.enum(),
    hour: Arb<Int> = Arb.positiveIntWithUniformNumDigitsProbability(0..18),
    minute: Arb<Int> = minute(),
    min: TimeOffset.HhMm?,
    max: TimeOffset.HhMm?,
  ): Arb<TimeOffset.HhMm> {
    require(min === null || max === null || min.toSeconds() < max.toSeconds()) {
      "min must be strictly less than max, but got: " +
        "min=$min (${min!!.toSeconds()} seconds), " +
        "max=$max (${max!!.toSeconds()} seconds), " +
        "a difference of ${min.toSeconds() - max.toSeconds()} seconds"
    }

    fun isBetweenMinAndMax(other: TimeOffset.HhMm): Boolean =
      (min === null || other >= min) && (max === null || other <= max)

    return arbitrary(
      edgecases =
        listOf(
            TimeOffset.HhMm(hours = 0, minutes = 0, sign = TimeOffset.HhMm.Sign.Positive),
            TimeOffset.HhMm(hours = 0, minutes = 0, sign = TimeOffset.HhMm.Sign.Negative),
            TimeOffset.HhMm(hours = 17, minutes = 59, sign = TimeOffset.HhMm.Sign.Positive),
            TimeOffset.HhMm(hours = 17, minutes = 59, sign = TimeOffset.HhMm.Sign.Negative),
            TimeOffset.HhMm(hours = 18, minutes = 0, sign = TimeOffset.HhMm.Sign.Positive),
            TimeOffset.HhMm(hours = 18, minutes = 0, sign = TimeOffset.HhMm.Sign.Negative),
          )
          .filter(::isBetweenMinAndMax)
    ) {
      var count = 0
      var hhmm: TimeOffset.HhMm
      while (true) {
        count++
        hhmm = TimeOffset.HhMm(hours = hour.bind(), minutes = minute.bind(), sign = sign.bind())
        if (isBetweenMinAndMax(hhmm)) {
          break
        } else if (count > 1000) {
          throw Exception("internal error j878fp4gmr: exhausted attempts to generate HhMm")
        }
      }
      hhmm
    }
  }

  fun year(): Arb


");
}

/*** header ***/

#header {
  margin-bottom: 18px;
}

.nav-button {
  min-width: 0;
}

#back-btn:-moz-locale-dir(ltr) {
  list-style-image: url("moz-icon://stock/gtk-go-back-ltr?size=toolbar");
}

#forward-btn:-moz-locale-dir(ltr) {
  list-style-image: url("moz-icon://stock/gtk-go-forward-ltr?size=toolbar");
}

#back-btn:-moz-locale-dir(rtl) {
  list-style-image: url("moz-icon://stock/gtk-go-back-rtl?size=toolbar");
}

#forward-btn:-moz-locale-dir(rtl) {
  list-style-image: url("moz-icon://stock/gtk-go-forward-rtl?size=toolbar");
}

#back-btn[disabled="true"]:-moz-locale-dir(ltr) {
  list-style-image: url("moz-icon://stock/gtk-go-back-ltr?size=toolbar&state=disabled");
}

#forward-btn[disabled="true"]:-moz-locale-dir(ltr) {
  list-style-image: url("moz-icon://stock/gtk-go-forward-ltr?size=toolbar&state=disabled");
}

#back-btn[disabled="true"]:-moz-locale-dir(rtl) {
  list-style-image: url("moz-icon://stock/gtk-go-back-rtl?size=toolbar&state=disabled");
}

#forward-btn[disabled="true"]:-moz-locale-dir(rtl) {
  list-style-image: url("moz-icon://stock/gtk-go-forward-rtl?size=toolbar&state=disabled");
}

#header-utils-btn {
  min-width: 4.5em;
}

#header-utils-btn .toolbarbutton-icon {
  list-style-image: url("moz-icon://stock/gtk-preferences?size=toolbar");
}

#header-utils-btn:-moz-focusring > .button-box {
  border: none;
}

#header-search {
  margin: 0;
}

.view-header {
  padding: 4px;
  margin: 0;
  min-height: 41px;
  background-color: ThreeDHighlight;
  border-bottom: 1px solid ThreeDShadow;
}

/*** sorters ***/

.sort-controls {
  -moz-appearance: none;
}

.sorter[checkState="1"] .button-icon {
  display: -moz-box;
  list-style-image: url("moz-icon://stock/gtk-sort-descending?size=16");
}

.sorter[checkState="2"] .button-icon {
  display: -moz-box;
  list-style-image: url("moz-icon://stock/gtk-sort-ascending?size=16");
}

/*** discover view ***/

.discover-spacer-before,
.discover-spacer-after {
  -moz-box-flex: 1;
}

#discover-error .alert {
  max-width: 45em;
  -moz-box-flex: 1;
}

.discover-logo {
  list-style-image: url("chrome://mozapps/skin/extensions/discover-logo.png");
  -moz-margin-end: 15px;
}

.discover-title {
  font-weight: bold;
  font-size: 24px;
  font-family: MetaWebPro-Book, "Trebuchet MS", sans-serif;
  margin: 0 0 15px 0;
}

.discover-description {
  text-align: justify;
  margin: 0 0 15px 0;
}

.discover-footer {
  text-align: justify;
}

/*** list ***/

.list {
  -moz-appearance: none;
  margin: 0;
  border: none;
  background-color: transparent;


essStorageOpts(systemOpts)
		assert.NilError(t, err)
		assert.Equal(t, storageOpts.GraphDriverName, vfsDriver)
	})

	t.Run("systemDriver=aufs", func(t *testing.T) {
		systemOpts := StoreOptions{}
		systemOpts.GraphDriverName = "aufs"
		storageOpts, err := getRootlessStorageOpts(systemOpts)
		assert.NilError(t, err)
		assert.Assert(t, storageOpts.GraphDriverName == overlayDriver || storageOpts.GraphDriverName == vfsDriver, fmt.Sprintf("The rootless driver should be set to 'overlay' or 'vfs' not '%v'", storageOpts.GraphDriverName))
	})

	t.Run("systemDriver=zfs", func(t *testing.T) {
		systemOpts := StoreOptions{}
		systemOpts.GraphDriverName = "zfs"
		storageOpts, err := getRootlessStorageOpts(systemOpts)
		assert.NilError(t, err)
		assert.Assert(t, storageOpts.GraphDriverName == overlayDriver || storageOpts.GraphDriverName == vfsDriver, fmt.Sprintf("The rootless driver should be set to 'overlay' or 'vfs' not '%v'", storageOpts.GraphDriverName))
	})

	t.Run("STORAGE_DRIVER=btrfs", func(t *testing.T) {
		t.Setenv("STORAGE_DRIVER", "btrfs")
		systemOpts := StoreOptions{}
		systemOpts.GraphDriverName = vfsDriver
		storageOpts, err := getRootlessStorageOpts(systemOpts)
		assert.NilError(t, err)
		assert.Equal(t, storageOpts.GraphDriverName, "btrfs")
	})

	t.Run("STORAGE_DRIVER=zfs", func(t *testing.T) {
		t.Setenv("STORAGE_DRIVER", "zfs")
		systemOpts := StoreOptions{}
		systemOpts.GraphDriverName = vfsDriver
		storageOpts, err := getRootlessStorageOpts(systemOpts)
		assert.NilError(t, err)
		assert.Equal(t, storageOpts.GraphDriverName, "zfs")
	})

	if envDriverSet {
		os.Setenv("STORAGE_DRIVER", envDriver)
	} else {
		os.Unsetenv("STORAGE_DRIVER")
	}
}

func TestGetRootlessStorageOpts2(t *testing.T) {
	opts := StoreOptions{
		RootlessStoragePath: "/$HOME/$UID/containers/storage",
	}
	expectedPath := filepath.Join(os.Getenv("HOME"), fmt.Sprintf("%d", unshare.GetRootlessUID()), "containers/storage")
	storageOpts, err := getRootlessStorageOpts(opts)
	assert.NilError(t, err)
	assert.Equal(t, storageOpts.GraphRoot, expectedPath)
}

func TestReloadConfigurationFile(t *testing.T) {
	content := bytes.NewBufferString("")
	logrus.SetOutput(content)
	var storageOpts StoreOptions
	err := ReloadConfigurationFile("./storage_broken.conf", &storageOpts)
	require.NoError(t, err)
	assert.Equal(t, storageOpts.RunRoot, "/run/containers/test")
	logrus.SetOutput(os.Stderr)

	assert.Equal(t, strings.Contains(content.String(), "Failed to decode the keys [\\\"foo\\\" \\\"storage.options.graphroot\\\"] from \\\"./storage_broken.conf\\\"\""), true)
}
package types

import (
	"errors"
	"os"
	"path/filepath"
	"strconv"
	"strings"

	"github.com/containers/storage/pkg/fileutils"
	"github.com/containers/storage/pkg/homedir"
	"github.com/sirupsen/logrus"
)

func expandEnvPath(path


  var orderedArray = array.sort();

  var arrayHashString = crypto.createHash('sha256').update(orderedArray.toString()).digest('hex').toString();
  return callback(arrayHashString);
};

SocketServer.prototype.onServerCommand = function onServerCommand(socket, data) {
  var self = this;
  var socket = this.socket;
  var command = data.command;
  var username = socket.user.username;
  //TODO refactor this
  var currentChat = data.currentChat;
  logger.info("Received command '"+command+"' from user '"+socket.name+"'");
  var splitCommand = command.split(" ");
  if (splitCommand[0] == "who") {
    logger.info("[SERVER] Responding to 'who' request from '"+socket.name+"'");
    var roomMembershipArray = [];
    logger.info("[SERVER COMMAND] Checking room #"+currentChat);
    for (var key in roomMembership[currentChat]) {
      logger.info("[SERVER COMMAND] Iterating user "+roomMembership[CurrentChat][key].username);
      roomMembershipArray.push(roomMembership[currentChat][key].username);
    }
    logger.info("[SERVER COMMAND] Broadcasting user list for #"+currentChat+" to socket.id "+socket.id+" with data ( "+roomMembershipArray.toString()+" )");
    this.namespace.to(socket.id).emit('chat status', { statusType: "WHO", statusMessage: "Current users of #"+currentChat+" are ( "+roomMembershipArray.toString()+" )"});
    //socket.broadcast.to(socket.id).emit('chat status', "Current users of #"+currentChat+" are ( "+roomMembershipArray.toString()+" )");
  } else if (splitCommand[0] == "room") {
    logger.info("Got room command");
    if (splitCommand[2] == "member") {
      logger.info("Got member sub command");
      if (splitCommand[3] == "add") {
        logger.info("Got add sub sub command");
        Room.addMember({ member: splitCommand[4], roomName: splitCommand[1] }, function(data) {
          var success = data.success;

          if (!success) {
            return logger.info("Was not successful when adding membe to room");
          }
          logger.info("Added " + splitCommand[4] + " to room " + splitCommand[1]);
          return socket.emit('serverCommandComplete', { response: "[SERVER] Added " + splitCommand[4] + " to room " + splitCommand[1] });
        })
      }
    }
  } else if (splitCommand[0] == "help") {
    // Output help here
  } else {
    logger.info("[SERVER COMMAND] Unable to parse server command...");
  }
};

/**
 * Client join room
 */
SocketServer.prototype.joinRoom = function joinRoom(socket, data) {
  var self = this;

  //logger.debug("[JOIN ROOM] data is ",data);

  if (!socket.user) {
    logger.info("Ignoring join attempt by unauthenticated user");
    return socket.emit('errorMessage', {message: 401});
  }

  var username = socket.user.username;
  var roomId = data.roomId;

  logger.info("[socketServer.joinRoom] User '" + username + "' joining room with id "+ roomId);

  logger.debug('[socketServer.joinRoom] config.encryptionScheme is: %s', config.encryptionScheme);

  // Ensure that user has the most recent master key for this room if in masterKey mode
  if (config.encryptionScheme === 'masterKey') {
    logger.debug("[JOIN ROOM] encryptionScheme: masterKey - checking masterKey");
    KeyId.getMasterKeyId(roomName, function(err, currentKeyId) {
      User.getMasterKeyPair(username, roomName, function(err, masterKeyPair) {
        if (masterKeyPair.id !== currentKeyId) {
          self.initMasterKeyPair(function(err) {
            // Should probably return and call self here


from argparse import ArgumentParser, Namespace

import torch

from accelerate.utils import set_seed
from utils.inference import InferenceLoop

def check_device(device: str) -> str:
    if device == "cuda":
        if not torch.cuda.is_available():
            print("CUDA not available because the current PyTorch install was not "
                  "built with CUDA enabled.")
            device = "cpu"
    else:
        if device == "mps":
            if not torch.backends.mps.is_available():
                if not torch.backends.mps.is_built():
                    print("MPS not available because the current PyTorch install was not "
                          "built with MPS enabled.")
                    device = "cpu"
                else:
                    print("MPS not available because the current MacOS version is not 12.3+ "
                          "and/or you do not have an MPS-enabled device on this machine.")
                    device = "cpu"
    print(f"using device {device}")
    return device

def parse_args() -> Namespace:
    parser = ArgumentParser()
    parser.add_argument("--steps", type=int, default=50)
    parser.add_argument("--better_start", action="store_true")
    parser.add_argument("--tiled", action="store_true")
    parser.add_argument("--tile_size", type=int, default=512)
    parser.add_argument("--tile_stride", type=int, default=256)
    parser.add_argument("--pos_prompt", type=str, default="")
    parser.add_argument("--neg_prompt", type=str, default="low quality, blurry, low-resolution, noisy, unsharp, weird textures")
    parser.add_argument("--cfg_scale", type=float, default=1.0)
    ### input parameters
    parser.add_argument("--input", type=str, required=True)
    parser.add_argument("--model", type=str, required=True)
    parser.add_argument("--n_samples", type=int, default=1)
    ### guidance parameters
    parser.add_argument("--guidance", action="store_true")
    parser.add_argument("--g_loss", type=str, default="w_mse", choices=["mse", "w_mse"])
    parser.add_argument("--g_scale", type=float, default=0.0)
    parser.add_argument("--g_start", type=int, default=1001)
    parser.add_argument("--g_stop", type=int, default=-1)
    parser.add_argument("--g_space", type=str, default="latent")
    parser.add_argument("--g_repeat", type=int, default=1)
    ### output parameters
    parser.add_argument("--output", type=str, required=True)
    ### common parameters
    parser.add_argument("--seed", type=int, default=231)
    parser.add_argument("--device", type=str, default="cuda", choices=["cpu", "cuda", "mps"])

    return parser.parse_args()

def main():
    args = parse_args()
    args.device = check_device(args.device)
    set_seed(args.seed)

    InferenceLoop(args).run()
    print("done!")

if __name__ == "__main__":
    main()


XWb0zIb0zs9muYYWkoKeru+vn664fBqElyZNuyh167NXJ8Ut8McjbmEraKHkd7uAnAFku+VWdb3reSmRV8PKSLfZ0Gjn3a6Xlcq9YGb6tADjn+lUfTXtVmaZ1KwBIvFI11rRXlWlatwIAAv2asaa9mlB9wwygiDX26qaw1yYPzFXg2N1GgG0FMF8Oj+VIx7E/03lHx8UhvYyNZLN7BwSPgekXXLribw7w5/c8EF+DBK5idvDVYtEEwMeYefjjLAdEyQ3M9nfOkgnPTEkYU+sxMq0BxNR6jExrAI31H1rzvLEfRIdgcv1XEdj6QTQAS2wtstEALLG1yEZ3QhH6oDX7ExBSFEkFINXH98NTrme5IOaaA7kIfiu2L8A3qhH9zRbukdCqdsA98TdElyeMe5BI8Rs2xHRIsoTSSVFfCFCWGPn9XHb4cdobRIWABNf0add9jakDjQJpJ1bTXOJXnnRXHRf+dNL1ZV1MBRCXhMbaHqGI1JkKIL7+i8uffuP6wVQAzO7+qVEbF6NbS0LJureYcWXUUhH66nLR5rYmva+2tjRFtojkM2aD76HEGAD3tPtKM309FJg5j/K682ywcWJ3PASCcycH/22u+Bh7Aa0ehM2Fu4z0SAE81HF9RkB21c5bEn4Dzw+/qNOyXr3DCTQDMBOdhi4nAgiFDGCinIa2owCEChUwD8qzd03PG+qdW/4fDzjUMcE1ZpIAAAAASUVORK5CYII=');
}
div.callout-caution.callout-style-default .callout-title {
background-color: #ffe5d0
}
</style>
  <style type="text/css">
.reveal div.sourceCode {
margin: 0;
overflow: auto;
}
.reveal div.hanging-indent {
margin-left: 1em;
text-indent: -1em;
}
.reveal .slide:not(.center) {
height: 100%;
}
.reveal .slide.scrollable {
overflow-y: auto;
}
.reveal .footnotes {
height: 100%;
overflow-y: auto;
}
.reveal .slide .absolute {
position: absolute;
display: block;
}
.reveal .footnotes ol {
counter-reset: ol;
list-style-type: none; margin-left: 0;
}
.reveal .footnotes ol li:before {
counter-increment: ol;
content: counter(ol) ". "; }
.reveal .footnotes ol li > p:first-child {
display: inline-block;
}
.reveal .slide ul,
.reveal .slide ol {
margin-bottom: 0.5em;
}
.reveal .slide ul li,
.reveal .slide ol li {
margin-top: 0.4em;
margin-bottom: 0.2em;
}
.reveal .slide ul[role="tablist"] li {
margin-bottom: 0;
}
.reveal .slide ul li > *:first-child,
.reveal .slide ol li > *:first-child {
margin-block-start: 0;
}
.reveal .slide ul li > *:last-child,
.reveal .slide ol li > *:last-child {
margin-block-end: 0;
}
.reveal .slide .columns:nth-child(3) {
margin-block-start: 0.8em;
}
.reveal blockquote {
box-shadow: none;
}
.reveal .tippy-content>* {
margin-top: 0.2em;
margin-bottom: 0.7em;
}
.reveal .tippy-content>*:last-child {
margin-bottom: 0.2em;
}
.reveal .slide > img.stretch.quarto-figure-center,
.reveal .slide > img.r-stretch.quarto-figure-center {
display: block;
margin-left: auto;
margin-right: auto; }
.reveal .


 vargs<T...> va = {{args...}};
  return detail::const_check(detail::use_utf8)
             ? vprintln(f, fmt.str, va)
             : detail::vprint_mojibake(f, fmt.str, va, true);
}

/// Formats `args` according to specifications in `fmt` and writes the output
/// to `stdout` followed by a newline.
template <typename... T>
FMT_INLINE void println(format_string<T...> fmt, T&&... args) {
  return fmt::println(stdout, fmt, static_cast<T&&>(args)...);
}

FMT_END_EXPORT
FMT_PRAGMA_CLANG(diagnostic pop)
FMT_PRAGMA_GCC(pop_options)
FMT_END_NAMESPACE

#ifdef FMT_HEADER_ONLY
#  include "format.h"
#endif
#endif  // FMT_BASE_H_


848)
        check(A.longArr[3].value == 8924920024888888848)
        val ac1 = A.longArr[3].value
        A.longArr[4].value = ac1
        check(A.longArr[4].incrementAndGet() == 8924920024888888849)
        check(A.longArr[4].value == 8924920024888888849)
        check(A.longArr[4].getAndDecrement() == 8924920024888888849)
        check(A.longArr[4].value == 8924920024888888848)
        A.longArr[4].value = 8924920024888888848
        check(A.longArr[4].getAndAdd(100000000000000000) == 8924920024888888848)
        val ac2 = A.longArr[4].value
        A.longArr[1].value = ac2
        check(A.longArr[1].value == 9024920024888888848)
        check(A.longArr[1].addAndGet(-9223372036854775807) == -198452011965886959)
        check(A.longArr[1].value == -198452011965886959)
        check(A.longArr[1].incrementAndGet() == -198452011965886958)
        check(A.longArr[1].value == -198452011965886958)
        check(A.longArr[1].decrementAndGet() == -198452011965886959)
        check(A.longArr[1].value == -198452011965886959)
    }

    @Test
    fun testBooleanArray() {
        val A = AtomicArrayClass()
        check(A.booleanArr.size == 10)
        check(!A.booleanArr[1].value)
        A.booleanArr[1].compareAndSet(false, true)
        A.booleanArr[0].lazySet(true)
        check(!A.booleanArr[2].getAndSet(true))
        check(A.booleanArr[0].value && A.booleanArr[1].value && A.booleanArr[2].value)
        A.booleanArr[0].value = false
        check(!A.booleanArr[0].value)
    }

    @Test
    fun testRefArray() {
        val A = AtomicArrayClass()
        check(A.refArr.size == 10)
        check(A.genericArr.size == 10)
        val a2 = IntBox(2)
        val a3 = IntBox(3)
        A.refArr[0].value = a2
        check(A.refArr[0].value!!.n == 2)
        check(A.refArr[0].compareAndSet(a2, a3))
        check(A.refArr[0].value!!.n == 3)
        val r0 = A.refArr[0].value
        A.refArr[3].value = r0
        check(A.refArr[3].value!!.n == 3)
        val a = A.a.value
        check(A.refArr[3].compareAndSet(a3, a))

        val l1 = listOf(listOf("a", "bb", "ccc"), listOf("a", "bb"))
        val l2 = listOf(listOf("1", "22", "333"), listOf("1", "22"))
        A.genericArr[2].lazySet(l1)
        check(A.genericArr[2].compareAndSet(l1, l2))

        A.mapArr[0].value = mapOf(listOf("A", "B") to "C")
    }

    @Test
    fun extendedApiTest() {
        val ea = ExtendedApiAtomicArrays()
        check(ea.stringAtomicNullArray[0].value == null)
        check(ea.stringAtomicNullArray[0].compareAndSet(null, "aaa"))
        val totalString = buildString {
            for (i in 0 until ea.stringAtomicNullArray.size) {
                ea.stringAtomicNullArray[i].value?.let { append(it) }
            }
        }
        assertEquals("aaa", totalString)

        check


  test("Open and cancel select time in time dialog") {
    runAndroidComposeUiTest<MainActivity> {
      var selectedTime: LocalTime? = null

      activity!!.setContent {
        val dialogState = timeDialogState(is24HoursFormat = true) { time ->
          selectedTime = time
        }
        dialogState.show()
      }

      onNodeWithText("Select Time").assertExists().assertIsDisplayed()

      onNodeWithText("CANCEL").performClick()

      selectedTime shouldBe null
    }
  }
})
/*
 * Petals APP
 * Copyright (C) 2021 Leonardo Colman Lopes
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

package br.com.colman.petals.use

import androidx.annotation.StringRes
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.LinearProgressIndicator
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import br.com.colman.petals.R.string.days
import br.com.colman.petals.R.string.hours
import br.com.colman.petals.R.string.milliseconds
import br.com.colman.petals.R.string.minutes
import br.com.colman.petals.R.string.months
import br.com.colman.petals.R.string.quit_date_text
import br.com.colman.petals.R.string.seconds
import br.com.colman.petals.R.string.years
import br.com.colman.petals.settings.SettingsRepository
import br.com.colman.petals.use.TimeUnit.Day
import br.com.colman.petals.use.TimeUnit.Hour
import br.com.colman.petals.use.TimeUnit.Millisecond
import br.com.colman.petals.use.TimeUnit.Minute
import br.com.colman.petals.use.TimeUnit.Month
import br.com.colman.petals.use.TimeUnit.Second
import br.com.colman.petals.use.TimeUnit.Year
import br.com.colman.petals.utils.truncatedToMinute
import compose.icons.TablerIcons
import comp


enum.BinaryOp.html) enum indicating
///    the type of scan operation
/// - `inclusive` says if inclusive/exclusive scan is to be performed
///
/// # Return Values
///
/// Output Array of scanned input
pub fn scan_by_key<K, V>(
    key: &Array<K>,
    input: &Array<V>,
    dim: i32,
    op: BinaryOp,
    inclusive: bool,
) -> Array<V::AggregateOutType>
where
    V: HasAfEnum,
    V::AggregateOutType: HasAfEnum,
    K: HasAfEnum + Scanable,
{
    let mut temp: i64 = 0;
    unsafe {
        let err_val = af_scan_by_key(
            &mut temp as MutAfArray,
            key.get() as AfArray,
            input.get() as AfArray,
            dim as c_int,
            op as c_uint,
            inclusive as c_int,
        );
        HANDLE_ERROR(AfError::from(err_val));
    }
    temp.into()
}
use std::{net::{Ipv4Addr, SocketAddr}, path::{Path, PathBuf}};
use ipnet::Ipv4Net;
use structopt::StructOpt;
use anyhow::Context;
use tokio::sync::mpsc;

mod arena;
mod robot;
mod network;
mod webui;
mod optitrack;
mod journal;
mod router;

#[derive(Debug, StructOpt)]
#[structopt(name = "supervisor", about = "A supervisor for experiments with swarms of robots")]
struct Options {
    #[structopt(short = "c", long = "configuration")]
    config: PathBuf,
}

// target messaging semantic
// journal and webui should subscribe to the information they want

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    /* initialize the logger */
    let environment = env_logger::Env::default().default_filter_or("supervisor=info");
    env_logger::Builder::from_env(environment).format_timestamp_millis().init();
    /* parse the configuration file */
    let options = Options::from_args();
    let Configuration {
        optitrack_config,
        router_socket,
        webui_socket,
        robot_network,
        pipucks,
        drones,
    } = parse_config(&options.config)
            .context(format!("Could not parse configuration file {:?}", options.config))?;
    /* channels for task communication */
    let (journal_requests_tx, journal_requests_rx) = mpsc::channel(8);
    let (arena_requests_tx, arena_requests_rx) = mpsc::channel(8);
    let (optitrack_requests_tx, optitrack_requests_rx) = mpsc::channel(8);
    let (router_requests_tx, router_requests_rx) = mpsc::channel(8);
    /* create journal task */
    let journal_task =
        journal::new(journal_requests_rx,
                     optitrack_requests_tx.clone(),
                     router_requests_tx);
    /* create arena task */
    let arena_task =
        arena::new(arena_requests_rx,
                   journal_requests_tx,
                   pipucks,
                   drones);
    /* create network task */
    let network_task = network::new(robot_network, arena_requests_tx.clone());
    /* create message router task */
    let router_socket = router_socket
        .ok_or(anyhow::anyhow!("A socket for the message router must be provided"))?;
    let router_task = router::new(router_socket, router_requests_rx);
    /* create optitrack task */
    let optitrack_config = optitrack_config
        .ok_or(anyhow::anyhow!("Optitrack configuration must be specified"))?;
    let optitrack_task = optitrack::new(optitrack_config, optitrack_requests_rx);
    /* create the backend task */
    let webui_socket =


.3, 1 ] ];
export const SEA_FIRE: Palette = [ [ 0.0, 0.2, 0.4, 1 ],[ 0.2, 0.5, 0.6, 1 ],[ 0.1, 0.2, 0.2, 1 ],[ 0.7, 0.2, 0.2, 1 ],[ 0.9, 0.5, 0.3, 1 ],[ 1.0, 0.9, 0.4, 1 ] ];
export const RUBY: Palette = [ [ 0.5, 0.0, 0.1, 1 ],[ 0.7, 0.0, 0.1, 1 ],[ 0.9, 0.0, 0.2, 1 ],[ 0.6, 0.0, 0.2, 1 ],[ 0.4, 0.0, 0.1, 1 ],[ 0.5, 0.1, 0.3, 1 ],[ 0.5, 0.0, 0.2, 1 ],[ 0.9, 0.2, 0.3, 1 ] ];
export const CATERPILLAR: Palette = [ [ 0.7, 0.8, 0.6, 1 ],[ 0.9, 0.9, 0.3, 1 ],[ 0.5, 0.7, 0.1, 1 ],[ 0.2, 0.5, 0.1, 1 ],[ 0.0, 0.2, 0.0, 1 ] ];
export const MAVERICK: Palette = [ [ 1.0, 0.0, 0.0, 1 ],[ 1.0, 0.4, 0.0, 1 ],[ 0.9, 0.8, 0.0, 1 ],[ 0.1, 0.3, 0.1, 1 ],[ 0.1, 0.1, 0.3, 1 ] ];
export const OPAL: Palette = [ [ 0.9, 0.6, 0.7, 1 ],[ 0.7, 0.6, 0.8, 1 ],[ 0.7, 0.9, 0.9, 1 ],[ 1.0, 1.0, 0.5, 1 ],[ 1.0, 0.7, 0.4, 1 ],[ 0.8, 1.0, 0.7, 1 ] ];
export const AUTUMN: Palette = [ [ 0.8, 0.5, 0.2, 1 ],[ 0.9, 0.8, 0.6, 1 ],[ 0.9, 0.7, 0.4, 1 ],[ 0.5, 0.2, 0.2, 1 ],[ 0.8, 0.4, 0.2, 1 ],[ 0.8, 0.2, 0.1, 1 ] ];
export const WOOD: Palette = [ [ 0.9, 0.8, 0.7, 1 ],[ 0.6, 0.2, 0.2, 1 ],[ 0.2, 0.1, 0.1, 1 ],[ 0.6, 0.4, 0.3, 1 ],[ 0.9, 0.7, 0.5, 1 ] ];
export const BLUE_MOON: Palette = [ [ 0.2, 0.2, 0.6, 1 ],[ 0.4, 0.5, 0.7, 1 ],[ 0.8, 0.9, 0.9, 1 ],[ 1.0, 1.0, 0.8, 1 ],[ 1.0, 0.9, 0.4, 1 ] ];
export const SIERRA: Palette = [ [ 0.2, 0.1, 0.1, 1 ],[ 0.5, 0.4, 0.3, 1 ],[ 0.5, 0.3, 0.2, 1 ],[ 0.2, 0.1, 0.1, 1 ],[ 0.7, 0.4, 0.2, 1 ],[ 0.5, 0.5, 0.3, 1 ],[ 1.0, 1.0, 0.9, 1 ],[ 0.4, 0.2, 0.2, 1 ],[ 0.5, 0.2, 0.2, 1 ],[ 0.7, 0.4, 0.3, 1 ],[ 0.9, 0.7, 0.5, 1 ],[ 0.3, 0.4, 0.2, 1 ],[ 0.3, 0.3, 0.2, 1 ] ];
export const SKY: Palette = [ [ 0.8, 0.9, 0.9, 1 ],[ 0.8, 0.9, 0.9, 1 ],[ 0.8, 0.9, 0.9, 1 ],[ 0.8, 0.8, 0.9, 1 ],[ 0.6, 0.8, 0.9, 1 ],[ 0.7, 0.8, 0.9, 1 ],[ 0.7, 0.8, 0.9, 1 ],[ 0.5, 0.5, 0.6, 1 ] ];
export const MANDELBROT: Palette = [ [ 0.0, 0.0, 0.4, 1 ],[ 0.1, 0.4, 0.8, 1 ],[ 0.9, 1.0, 1.0, 1 ],[ 1.0, 0.7, 0.0, 1 ],[ 0.0, 0.0, 0.0, 1 ],[ 0.0, 0.0, 0.0, 1 ] ];import { HttpClient, HttpHeaders } from '@angular/common/http';
import { map } from 'rxjs/operators';
import { Http, Response } from "@angular/http";

import { Injectable } from '@angular/core';
import {Observable} from 'rxjs/Observable';

export class User{
  constructor(
    public status:string,
     ) {}

}

export class JwtResponse{
  constru


_pAnim->m_pScales[ m_iCurrFrameScale ]->m_fScaleX;
					newSY = m_pAnim->m_pScales[ m_iCurrFrameScale ]->m_fScaleY;
				}
				else
				{
					float timeDiff = m_pAnim->m_pScales[ m_iCurrFrameScale+1 ]->m_fTime - m_pAnim->m_pScales[ m_iCurrFrameScale ]->m_fTime;
					if ( timeDiff <= 0 )
					{
						// key frames have the same time, should never happen but account for it anyway
						newSX = m_pAnim->m_pScales[ m_iCurrFrameScale+1 ]->m_fScaleX;
						newSY = m_pAnim->m_pScales[ m_iCurrFrameScale+1 ]->m_fScaleY;
					}
					else
					{
						// interpolate between these key frames
						float t = (currtime - m_pAnim->m_pScales[ m_iCurrFrameScale ]->m_fTime) / timeDiff;
						m_pAnim->m_pScales[ m_iCurrFrameScale ]->Interpolate( m_pAnim->m_pScales[ m_iCurrFrameScale+1 ], t, newSX, newSY );
					}
				}
			}
		}

		// no parent tweening
	}

	m_pParent = oldParent;

	if ( oldAngle < newAngle )
	{
		while ( newAngle - oldAngle > 180 ) oldAngle += 360;
	}
	else
	{
		while ( oldAngle - newAngle > 180 ) newAngle += 360;
	}

	x = origX + oldX + (newX-oldX)*s;
	y = origY + oldY + (newY-oldY)*s;
	angle = origAngle + oldAngle + (newAngle-oldAngle)*s;
	sX = (oldSX + (newSX-oldSX)*s)*origSX;
	sY = (oldSY + (newSY-oldSY)*s)*origSY;
}

void Bone2D::Interpolate( float currtime )
{
	float newX = 0;
	float newY = 0;
	float newAngle = 0;
	float newSX = 1;
	float newSY = 1;
	Bone2D *newParent = m_pParent;

	if ( m_pAnim && (m_bFlags & AGK_BONE_ANIMATE) )
	{
		if ( m_iCurrFramePosition >= m_pAnim->m_iNumPositions ) m_iCurrFramePosition = 0;
		if ( m_iCurrFrameRotation >= m_pAnim->m_iNumRotations ) m_iCurrFrameRotation = 0;
		if ( m_iCurrFrameScale >= m_pAnim->m_iNumScales ) m_iCurrFrameScale = 0;
		if ( m_iCurrFrameParent >= m_pAnim->m_iNumParents ) m_iCurrFrameParent = 0;

		// positions
		if ( m_pAnim->m_iNumPositions > 0 && m_pAnim->m_pPositions[ 0 ]->m_fTime <= currtime )
		{
			if ( m_pAnim->m_pPositions[ m_iCurrFramePosition ]->m_fTime == currtime || m_pAnim->m_iNumPositions == 1 )
			{
				// animation frame exactly matches time we are looking for, no interpolation required
				newX = m_pAnim->m_pPositions[ m_iCurrFramePosition ]->m_fX;
				newY = m_pAnim->m_pPositions[ m_iCurrFramePosition ]->m_fY;
			}
			else
			{
				if ( m_pAnim->m_pPositions[ m_iCurrFramePosition ]->m_fTime < currtime )
				{
					// time is ahead of our pointer, advance until we find the right frame
					while ( m_iCurrFramePosition < m_pAnim->m_iNumPositions-1
						 && m_pAnim->m_pPositions[ m_iCurrFramePosition+1 ]->m_fTime < currtime )


2236%22%20height%3D%2236%22%20viewBox%3D%220%200%2036%2036%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.292%2022.217a.982.982%200%200%200-.012%201.396l.107.107a.974.974%200%200%200%201.396-.012L18%2019.36l4.217%204.35a.982.982%200%200%200%201.396.01l.107-.106a.974.974%200%200%200-.012-1.396L19.36%2018l4.35-4.217a.982.982%200%200%200%20.01-1.396l-.106-.107a.974.974%200%200%200-1.396.012L18%2016.64l-4.217-4.35a.982.982%200%200%200-1.396-.01l-.107.106a.974.974%200%200%200%20.012%201.396L16.64%2018l-4.35%204.217z%22%20fill%3D%22%238391A0%22%20opacity%3D%22.7%22%2F%3E%3C%2Fsvg%3E') 50% no-repeat}.pinnedMsg .dialog_item{padding:0}.pinnedMsg .di_iwrap{display:none}.pinnedMsg .di_cont{margin-left:0;min-height:0;min-height:auto}.pinnedMsg .mi_author{display:none}.pinnedMsg .di_head{padding:0;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-webkit-align-items:flex-end;-moz-box-align:end;-ms-flex-align:end;align-items:flex-end;white-space:nowrap}.pinnedMsg .di_chat_user{padding:0 6px 0 0;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.m .pinnedMsg .di_chat_user{font-size:15px;font-weight:500!important;color:#426997}.m .pinnedMsg .di_chat_user,.vk_ios_yes .m .pinnedMsg .di_chat_user{-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto}.vk_ios_yes .m .pinnedMsg .di_chat_user{font-weight:600!important}.pinnedMsg .di_body,.pinnedMsg .di_text{-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.pinnedMsg .di_text{padding-top:0;line-height:initial}.pinnedMsg .mi_medias_plain{-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.m .pinnedMsg .di_text,.m .pinnedMsg .mi_medias_plain{padding-top:1px!important;font-size:15px!important;line-height:1.33!important;display:block!important}.m .pinnedMsg .di_text{color:#000}.m .pinnedMsg .mi_medias_plain{color:#316096!important}.pinnedMsg .di_text br{content:'';display:inline-block}.pinnedMsg .mi_medias_plain{padding-top:0}.m .pinnedMsg .mi_medias_plain{color:#316096;font-size:14px;line-height:20px}.pinnedMsg .di_text+.mi_medias_plain{display:none!important}.pinnedMsg .di_date{padding:1px 0}.m .pinnedMsg .di_date{font-size:13px;color:#909499;padding:0}.stickersHints{display:none;position:absolute;left:13px;right:7px;height:78px;margin-top:-4px;z-index:2}.stickersHints__arrow{position:absolute;top:-7px;right:72px;width:20px;height:8px;opacity:0.97;backgroun


(m.FailpointCommands) > 0 {
		for _, s := range m.FailpointCommands {
			l = len(s)
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	l = len(m.RunnerExecPath)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.ExternalExecPath)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	if len(m.Stressers) > 0 {
		for _, e := range m.Stressers {
			l = e.Size()
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	if len(m.Checkers) > 0 {
		for _, s := range m.Checkers {
			l = len(s)
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	if m.StressKeySize != 0 {
		n += 2 + sovRpc(uint64(m.StressKeySize))
	}
	if m.StressKeySizeLarge != 0 {
		n += 2 + sovRpc(uint64(m.StressKeySizeLarge))
	}
	if m.StressKeySuffixRange != 0 {
		n += 2 + sovRpc(uint64(m.StressKeySuffixRange))
	}
	if m.StressKeySuffixRangeTxn != 0 {
		n += 2 + sovRpc(uint64(m.StressKeySuffixRangeTxn))
	}
	if m.StressKeyTxnOps != 0 {
		n += 2 + sovRpc(uint64(m.StressKeyTxnOps))
	}
	if m.StressClients != 0 {
		n += 2 + sovRpc(uint64(m.StressClients))
	}
	if m.StressQPS != 0 {
		n += 2 + sovRpc(uint64(m.StressQPS))
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *Stresser) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	l = len(m.Type)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.Weight != 0 {
		n += 9
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *Etcd) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	l = len(m.Name)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.DataDir)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.WALDir)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.HeartbeatIntervalMs != 0 {
		n += 1 + sovRpc(uint64(m.HeartbeatIntervalMs))
	}
	if m.ElectionTimeoutMs != 0 {
		n += 1 + sovRpc(uint64(m.ElectionTimeoutMs))
	}
	if len(m.ListenClientURLs) > 0 {
		for _, s := range m.ListenClientURLs {
			l = len(s)
			n += 2 + l + sovRpc(uint64(l))
		}


set up', function() {
    return expectTreeAsync(
      'git clone; git checkout -b foo; git commit; git push',
      '{"branches":{"main":{"target":"C1","id":"main","remoteTrackingBranchID":"o/main"},"o/main":{"target":"C1","id":"o/main","remoteTrackingBranchID":null},"foo":{"target":"C2","id":"foo","remoteTrackingBranchID":"o/foo"},"o/foo":{"target":"C2","id":"o/foo","remoteTrackingBranchID":null}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"}},"HEAD":{"target":"foo","id":"HEAD"},"originTree":{"branches":{"main":{"target":"C1","id":"main","remoteTrackingBranchID":null},"foo":{"target":"C2","id":"foo","remoteTrackingBranchID":null}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"}},"HEAD":{"target":"main","id":"HEAD"}}}'
    );
  });

  it('will push to the remote tracking branch WHILE NOT on branch if it is set up', function() {
    return expectTreeAsync(
      'git clone; git checkout -b foo o/main; git commit; go main; git push origin foo',
      '{"branches":{"main":{"target":"C1","id":"main","remoteTrackingBranchID":"o/main"},"o/main":{"target":"C2","id":"o/main","remoteTrackingBranchID":null},"foo":{"target":"C2","id":"foo","remoteTrackingBranchID":"o/main"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"}},"HEAD":{"target":"main","id":"HEAD"},"originTree":{"branches":{"main":{"target":"C2","id":"main","remoteTrackingBranchID":null}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"}},"HEAD":{"target":"main","id":"HEAD"}}}'
    );
  });

  it('will push to a new remote branch if tracking was previously set up but remote branch was merged on origin', function() {
    return expectTreeAsync(
      `git clone;
      git switch -c feat;
      git commit;
      git push;
      git fakeTeamwork;
      git mergeMR feat main --delete-after-merge;
      git commit;
      git push;`,
      '{"branches":{"main":{"remoteTrackingBranchID":"o/main","target":"C1","id":"main"},"o/main":{"remoteTrackingBranchID":null,"target":"C1","id":"o/main"},"feat":{"remoteTrackingBranchID":"o/feat","target":"C5","id":"feat"},"o/feat":{"remoteTrackingBranchID":null,"target":"C5","id":"o/feat"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"},"C5":{"parents":["C2"],"id":"C5"}},"tags":{},"HEAD":{"id":"HEAD","target":"feat"},"originTree":{"branches":{"main":{"remoteTrackingBranchID":null,"target":"C4","id":"main"},"feat":{"remoteTrackingBranchID":null,"target":"C5","id":"feat"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"},"C3":{"parents":["C


w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" class="h-5 w-5 text-gray-400"><path fill-rule="evenodd" d="M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z" clip-rule="evenodd"></path></svg>
<form><input autofocus="" autocomplete="off" id="search_top" name="search_top" class="block w-full rounded-md border-0 bg-white py-1.5 pl-10 pr-3 text-gray-900 ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6" placeholder="Search" type="search"></form>

<button id="headlessui-disclosure-button-1" type="button" aria-expanded="false" data-headlessui-state="" class="relative inline-flex items-center justify-center rounded-md p-2 text-gray-400 hover:bg-gray-100 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500">Open main menu<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" class="block h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg></button>

SSH Config

Tags:

quicktips

Video Is Here

As with all these quick tips, I'm trying to just show basic things that I don't want to assume. Everybody knows. This one is a nice one that I use a lot. When I have to SSH into a server, which I try not to do. Basically everybody has a config file. In there. I'll move him into it. So SSH Config. In this file, you can add if it's not there these type of this line, these lines, and you could have many of them. So for example, this is a host. I'm going to call quick tips. So I can call that server quick tips. That server has an IP, and that server has the username. Now I could even use a different key.

If


butter, tahini, sweet potato and vanilla extract.",
							Type: "HowToStep",
						},
						{
							Text: "Add in the flour, baking powder, baking soda and salt and mix until just combined.",
							Type: "HowToStep",
						},
						{Text: "Fold in the chocolate chips.", Type: "HowToStep"},
						{
							Text: "Roll golfball-size amounts of dough. Use your hands to flatten them before placing them on the greased cookie sheet. Leave about 1-2 inches between cookies in case they spread.",
							Type: "HowToStep",
						},
						{Text: "Bake for 8-10 minutes or until browned.", Type: "HowToStep"},
						{
							Text: "Let cool for 5 minutes on the baking sheet and then transfer to a cooking rack to cool completely.",
							Type: "HowToStep",
						},
					},
				},
				Name:            "Almond Chickpea Chocolate Chip Cookies",
				NutritionSchema: &models.NutritionSchema{},
				PrepTime:        "PT10M",
				ThumbnailURL:    &models.ThumbnailURL{},
				Tools:           &models.Tools{Values: []models.HowToItem{}},
				Yield:           &models.Yield{Value: 16},
				URL:             "https://plentyvegan.com/almond-chickpea-chocolate-chip-cookies/",
				Video:           &models.Videos{},
			},
		},
		{
			name: "ploetzblog.de",
			in:   "https://www.ploetzblog.de/rezepte/hartweizenbrot/id=61fbd728a672573b7a4f6e3e",
			want: models.RecipeSchema{
				AtContext:     "https://schema.org",
				AtType:        &models.SchemaType{Value: "Recipe"},
				Category:      &models.Category{Value: "uncategorized"},
				CookingMethod: &models.CookingMethod{},
				Cuisine:       &models.Cuisine{},
				Description:   &models.Description{Value: "100 % Hartweizen, 100 % italienischer Geschmack.\n\nDie einen fühlen sich an Zimt erinnert, die anderen an Nudeln. Die Meinungen über reine Hartweizenbrote gehen auseinander. Mal geliebt, mal gehasst. Ich gehöre eher zur wohlmeinenden Gruppe.\n\nDieses Rezept arbeitet mit Vor- und Sauerteig. Die Krume ist mittelporig und offen, saftig und aromatisch, die Kruste kräftig ausgebacken."},
				Keywords:      &models.Keywords{},
				Image:         &models.Image{Value: anUploadedImage.String()},
				Ingredients: &models.Ingredients{
					Values: []string{
						"524 g Hartweizenmehl", "402 g Wasser", "50 g Weizenanstellgut", "12 g Salz",
						"11 g Olivenöl", "0,33 g Frischhefe",
					},
				},
				Instructions: &models.Instructions{
					Values: []models.HowToItem{
						{Type: "HowToStep", Text: "Weizensauerteig\n1. Die Zutaten in der genannten Reihenfolge in eine Schüssel wiegen.\n2. Mischen, bis sich die Zutaten zu einem festen Teig verbunden haben.\n3. Mit einer Abdeckhaube, einem Deckel oder etwas ähnlichem zudecken.\n4. 12 Stunden bei 20 °C reifen lassen."},
						{Type: "HowToStep", Text: "Vorteig\n1. Die Zutaten in der genannten Reihenfolge in eine Schüssel wiegen.\n2. Mischen, bis sich die Zutaten zu einem festen Teig verbunden haben.\n3. Mit einer Abdeckhaube, einem Deckel oder etwas ähnlichem zudecken.\n4. 12 Stunden bei 20 °C reifen lassen."},
						{Type: "HowToStep", Text: "Autolyseteig\n1. Die Zutaten in der genannten Reihenfolge in eine Schüssel wiegen.\n2. Mischen, bis sich die Z


e:Exception){
                        exc = e
                    }
                }

                if(!success){
                    vsh.postNotification(R.drawable.ic_error, vsh.getString(R.string.error_common_header), exc.localizedMessage ?: vsh.getString(R.string.package_import_unknown_error))
                }

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    req.accept()
                }
                vsh.reloadShortcutList()
            }
        }
        finish(view.screens.mainMenu)
    }

    private val tmpRectF = RectF()
    override fun onDraw(ctx: Canvas, drawBound: RectF, deltaTime:Float) {
        val bTop = drawBound.top + 100.0f
        tmpRectF.set(
            drawBound.centerX() - 50.0f,
            bTop + 25.0f,
            drawBound.centerX() + 50.0f,
            bTop + 125.0f
        )
        ctx.drawBitmap(shortcut.icon, null, tmpRectF, null, FittingMode.FIT, 0.5f, 0.5f)
        var textTop = bTop + 150.0f
        val textCenter = 0.40f.toLerp(drawBound.left, drawBound.right)

        arrayOf(
            "ID" to shortcut.id,
            "Name" to shortcut.name,
            "Long Name" to shortcut.longName,
            "Package" to shortcut.packageName,
        ).forEach{
           if(it.second.isNotEmpty()){
               textPaint.textAlign = Paint.Align.RIGHT
                ctx.drawText(it.first, textCenter - 10.0f, textTop, textPaint, 0.5f)
               textPaint.textAlign = Paint.Align.LEFT
               ctx.drawText(it.second, textCenter + 10.0f, textTop, textPaint, 0.5f)

               textTop += textPaint.textSize
           }
        }
        textPaint.textAlign = Paint.Align.CENTER
        ctx.drawText("Install this shortcut to Cross Launcher?",
            drawBound.centerX(),
            textTop + textPaint.textSize,
            textPaint,
            0.5f)
    }
}package id.psw.vshlauncher.views.dialogviews

import android.app.ActivityManager
import android.content.Context
import android.graphics.*
import android.os.Build
import android.os.Environment
import android.os.StatFs
import android.text.format.Formatter
import androidx.core.content.res.ResourcesCompat
import androidx.core.graphics.drawable.toBitmap
import id.psw.vshlauncher.BuildConfig
import id.psw.vshlauncher.R
import id.psw.vshlauncher.select
import id.psw.vshlauncher.submodules.VulkanisirSubmodule
import id.psw.vshlauncher.types.XmbItem
import id.psw.vshlauncher.typography.FontCollections
import id.psw.vshlauncher.views.XmbDialogSubview
import id.psw.vshlauncher.views.XmbView

class AboutDeviceDialogView(v: XmbView) : XmbDialogSubview(v) {
    override val hasNegativeButton: Boolean = true
    override val hasPositiveButton: Boolean = false
    override val negativeButton: String = vsh.getString(R.string.common_back)
    override val icon: Bitmap = ResourcesCompat.getDrawable(vsh.resources, R.drawable.icon_info, null)?.toBitmap(64,64) ?: XmbItem.TRANSPARENT_BITMAP
    override val title: String
        get() = vsh.getString(R.string.setting_systeminfo_name)

    private val strData = mutableMapOf<String, String>()
    private val strPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
        typeface = FontCollections.masterFont
        textSize = 20.0f
        color = Color.WHITE
    }

    override fun onStart() {
        val actSvc = vsh.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
        val isGo = act


src="./imgs/align-items-start.svg" width="400"/>

```css
.container {
  align-items: end;
}
```

```css
.container {
  align-items: center;
}
```

```css
.container {
  align-items: stretch;
}
```

这种行为也可以通过 align-self 属性在单个网格项上进行设置。

还有两个修饰关键字：safe 和 unsafe（用法类似于 align-items: safe end）。safe 关键字的含义是：“尝试以这种方式对齐，但如果这会导致项目移动到无法访问的溢出区域，则不要对齐。” 而 unsafe 则允许内容移动到无法访问的区域，即使这会导致“数据丢失”。

## place-items

`place-items` 是设置 `align-items` 和 `justify-items` 的简写形式。其语法形式如下：

```css
.container {
  place-items: <align-items> / <justify-items>
}
```

> 提示：如果省略第二个值，则将第一个值同时分配给这两个属性。

## justify-content

有时你的网格总大小可能小于其网格容器的大小。如果所有网格项的尺寸都使用非弹性单位（如 px）定义，这种情况就可能发生。在这种情况下，你可以设置网格在网格容器内的对齐方式。该属性会沿着行轴（inline axis，横向）对齐网格（不同于 align-content，它是沿着块轴（block axis，纵向）对齐网格的）。

```css
.container {
  justify-content: start | end | center | stretch | space-around | space-between | space-evenly;
}
```

- `start`：将网格对齐到网格容器的起始边缘（左侧对齐）
- `end`：将网格对齐到网格容器的结束边缘（右侧对齐）
- `center`：将网格居中对齐在网格容器内（水平居中对齐）
- `stretch`：调整网格项大小，使网格填满网格容器的整个宽度
- `space-around`：在每个网格项之间放置相同的空间，两端的空隙是这些空间的一半
- `space-between`：在每个网格项之间放置相等的空间，两端没有空隙
- `space-evenly`：在每个网格项之间放置相同的空间，包括两端

示例：

```css
.container {
  justify-content: start;
}
```

```css
.container {
  justify-content: end;
}
```

```CSS
.container {
  justify-


Id(cfCarParkUseLog.getCarParkId());
            cfCarParkSpecialCarQuery.setNumberPlate(cfCarParkUseLog.getNumberPlate());
            List<CfCarParkSpecialCar> cfCarParkSpecialCars = cfCarParkSpecialCarService.getListByQuery(cfCarParkSpecialCarQuery);
            if(cfCarParkSpecialCars!=null && cfCarParkSpecialCars.size()>0){
                cfCarParkOrder.setCfCarParkSpecialCar(cfCarParkSpecialCars.get(0));
                CfCarParkCarType cfCarParkCarType = cfCarParkCarTypeService.findByKey(cfCarParkSpecialCars.get(0).getTypeKey(), false);
                cfCarParkOrder.setCfCarParkCarType(cfCarParkCarType);
            }else{
                //没有数据这设置为临时车
                CfCarParkCarType cfCarParkCarType = cfCarParkCarTypeService.findByKey("temporary_car", false);
                cfCarParkOrder.setCfCarParkCarType(cfCarParkCarType);
            }
        }

        cfCarParkOrder.setCfCouponList(cfCoupons);

        return new ResponseResult(CommonCode.SUCCESS, cfCarParkOrder);
    }

    @Override
    public CfOrder getOrderByCarUseLogId(String carParkUseLogId) {
        CfOrderQuery cfOrderQuery = new CfOrderQuery();
        cfOrderQuery.setGoodsType(GoodsType.CARPARK_PAYMENT);
        cfOrderQuery.setGoodsId(carParkUseLogId);
        List<CfOrder> listByCondition = cfOrderService.getListByQuery(cfOrderQuery);
        if(listByCondition==null || listByCondition.size()==0){
            ExceptionCast.cast(PayCode.ORDER_DOES_NOT_EXIST);
        }
        return listByCondition.get(0);
    }

    @PreAuthorize("hasAuthority('carpark-CfCarParkOrderController-countByQuery')")
    @Override
    @RequestMapping(value = "countByQuery", method = RequestMethod.GET)
    public ResponseResult countByQuery(CfCountFinanceQuery cfCountFinanceQuery) throws Exception {

        if(StringUtils.isEmpty(cfCountFinanceQuery.getDate())){
            cfCountFinanceQuery.setDate("2018-01-01 00:00:00");
        }
        if(StringUtils.isEmpty(cfCountFinanceQuery.getEndDate())){
            cfCountFinanceQuery.setEndDate(DateUtil.stampToDate(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
        }

        UserBasicInfo userBasicInfo = AuthenticationInterceptor.parseJwt(HttpHearderUtils.getAuthorization(request));
        List<CfCarParkLinkUser> linkUsers = carParkController.getLinkUsersAndCheck(userBasicInfo);
        if(linkUsers!=null && linkUsers.size()>0){
            cfCountFinanceQuery.setShopIds(new ArrayList<>());
            for (CfCarParkLinkUser cfCarParkLinkUser: linkUsers){
                cfCountFinanceQuery.getShopIds().add(cfCarParkLinkUser.getCarParkId());
            }
        }

        List<CountByDay> countByDays = cfOrderService.limitDaysCountByDayFromPayTime(cfCountFinanceQuery);
        return new ResponseResult(CommonCode.SUCCESS, countByDays);
    }
}
package com.cf.carpark.admin.swagger;

import com.cf.carpark.domain.request.CfCarParkLinkUserForm;
import com.cf.carpark.domain.request.CfCarParkLinkUserQuery;
import com.cf.framework.domain.response.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.


primary;
	struct dentry *root = minor->debugfs_root;
	struct ttm_resource_manager *man;
	struct xe_gt *gt;
	u32 mem_type;
	u8 id;

	drm_debugfs_create_files(debugfs_list,
				 ARRAY_SIZE(debugfs_list),
				 root, minor);

	debugfs_create_file("forcewake_all", 0400, root, xe,
			    &forcewake_all_fops);

	debugfs_create_file("wedged_mode", 0600, root, xe,
			    &wedged_mode_fops);

	for (mem_type = XE_PL_VRAM0; mem_type <= XE_PL_VRAM1; ++mem_type) {
		man = ttm_manager_type(bdev, mem_type);

		if (man) {
			char name[16];

			snprintf(name, sizeof(name), "vram%d_mm", mem_type - XE_PL_VRAM0);
			ttm_resource_manager_create_debugfs(man, root, name);
		}
	}

	man = ttm_manager_type(bdev, XE_PL_TT);
	ttm_resource_manager_create_debugfs(man, root, "gtt_mm");

	man = ttm_manager_type(bdev, XE_PL_STOLEN);
	if (man)
		ttm_resource_manager_create_debugfs(man, root, "stolen_mm");

	for_each_gt(gt, xe, id)
		xe_gt_debugfs_register(gt);

	fault_create_debugfs_attr("fail_gt_reset", root, &gt_reset_failure);
}


local IAspect = require("api.IAspect")
local IItemReadable = require("mod.elona.api.aspect.IItemReadable")
local IChargeable = require("mod.elona.api.aspect.IChargeable")
local IItemInittable = require("mod.elona.api.aspect.IItemInittable")
local Rand = require("api.Rand")
local IItemLocalizableExtra = require("mod.elona.api.aspect.IItemLocalizableExtra")
local I18N = require("api.I18N")
local Enum = require("api.Enum")

local IItemAncientBook = class.interface("IItemAncientBook",
                                         {
                                            difficulty = "number",
                                            is_decoded = "boolean"
                                         },
                                         { IAspect, IChargeable, IItemReadable, IItemInittable, IItemLocalizableExtra })

IItemAncientBook.default_impl = "mod.elona.api.aspect.ItemAncientBookAspect"

function IItemAncientBook:localize_action()
   return "base:aspect._.elona.IItemAncientBook.action_name"
end

function IItemAncientBook:on_init_params(item, params)
   -- >>>>>>>> shade2/item.hsp:30 	#define global maxMageB


al(rollbackFor = Exception.class)
    public List<UserAuthority> exchangeUserAuthority(Long tenantId, Long userId, Long exchangeUserId) {
        //如果用户ID和交换的用户ID则不做操作
        if (userId.equals(exchangeUserId)) {
            return null;
        }
        //用户交换后的权限列表
        List<UserAuthority> userAuthorities = null;
        UserAuthority userAuthority = new UserAuthority();
        //查询用户的权限列表头信息
        UserAuthority user = userAuthority.init(userId, tenantId, null, null);
        List<UserAuthority> userAuthorityList = userAuthorityRepository.select(user);
//        List<UserAuthority> userAuthorityList = userAuthorityRepository.listByUserIdAndTenantId(userId, tenantId);
        //查询需要交换用户的权限头信息
        UserAuthority exchangeUser = userAuthority.init(exchangeUserId, tenantId, null, null);
        List<UserAuthority> exchangeUserAuthorityList = userAuthorityRepository.select(exchangeUser);
//        List<UserAuthority> exchangeUserAuthorityList = userAuthorityRepository.listByUserIdAndTenantId(exchangeUserId, tenantId);
        //如果用户没有权限不做任何操作
        if (CollectionUtils.isEmpty(userAuthorityList) && CollectionUtils.isEmpty(exchangeUserAuthorityList)) {
            return null;
        }

        /**
         * 临时保存权限的userId
         */
        Long tempUserId = -exchangeUserId;
        if (CollectionUtils.isNotEmpty(exchangeUserAuthorityList)) {
            exchangeUserAuthorityList.forEach(item -> {
                item.setUserId(tempUserId);
                userAuthorityRepository.updateOptional(item, UserAuthority.FIELD_USER_ID);
            });
        }

        //交换UserID
        if (CollectionUtils.isNotEmpty(userAuthorityList)) {
            userAuthorityList.forEach(u -> u.setUserId(exchangeUserId));
            userAuthorities = userAuthorityRepository.batchUpdateByPrimaryKey(userAuthorityList);
//            handlerExchangeUserAuth(userAuthorityList);
        }

        //交换UserID
        if (CollectionUtils.isNotEmpty(exchangeUserAuthorityList)) {
            exchangeUserAuthorityList.forEach(e -> e.setUserId(userId));
            userAuthorityRepository.batchUpdateByPrimaryKey(exchangeUserAuthorityList);
//            handlerExchangeUserAuth(exchangeUserAuthorityList);
        }
        return userAuthorities;
    }

    @Override
    public UserAuthorityDTO selectCreateUserAuthority(Long tenantId, Long userId, String authorityTypeCode, String dataCode, String dataName, PageRequest pageRequest) {
        UserAuthorityDTO userAuthorityDTO = new UserAuthorityDTO();
        Page<UserAuthorityLine> userAuthorityLines;
        UserAuthority userAuthority = getAuthority(tenantId, userId, authorityTypeCode);
        //查询头ID是否存在
        Long authorityId = userAuthority.getAuthorityId();
        if (authorityId != null && StringUtils.contains(userAuthority.getDataSource(), Constants.SecGrpAssign.DEFAULT_DATA_SOURCE)) {
            //查询头数据
            userAuthority = userAuthorityRepository.selectByPrimaryKey(authorityId);
            //分页查询行数据
            userAuthorityLines = userAuthorityLineRepository.selectCreateUserAuthorityLines(authorityId, tenantId, dataCode, dataName, pageRequest);
        } else {
            userAuthority.setIncludeAllFla


interceptorAlloc struct {
		arr [6]txnInterceptor
		txnHeartbeater
		txnSeqNumAllocator
		txnPipeliner
		txnSpanRefresher
		txnCommitter
		txnMetricRecorder
		txnLockGatekeeper // not in interceptorStack array.
	}

	// typ specifies whether this transaction is the top level,
	// or one of potentially many distributed transactions.
	typ kv.TxnType
}

var _ kv.TxnSender = &TxnCoordSender{}

// txnInterceptors are pluggable request interceptors that transform requests
// and responses and can perform operations in the context of a transaction. A
// TxnCoordSender maintains a stack of txnInterceptors that it calls into under
// lock whenever it sends a request.
type txnInterceptor interface {
	lockedSender

	// setWrapped sets the txnInterceptor wrapped lockedSender.
	setWrapped(wrapped lockedSender)

	// populateLeafInputState populates the given input payload
	// for a LeafTxn.
	populateLeafInputState(*roachpb.LeafTxnInputState)

	// populateLeafFinalState populates the final payload
	// for a LeafTxn to bring back into a RootTxn.
	populateLeafFinalState(*roachpb.LeafTxnFinalState)

	// importLeafFinalState updates any internal state held inside the
	// interceptor from the given LeafTxn final state.
	importLeafFinalState(context.Context, *roachpb.LeafTxnFinalState)

	// epochBumpedLocked resets the interceptor in the case of a txn epoch
	// increment.
	epochBumpedLocked()

	// createSavepointLocked is used to populate a savepoint with all the state
	// that needs to be restored on a rollback.
	createSavepointLocked(context.Context, *savepoint)

	// rollbackToSavepointLocked is used to restore the state previously saved by
	// createSavepointLocked().
	rollbackToSavepointLocked(context.Context, savepoint)

	// closeLocked closes the interceptor. It is called when the TxnCoordSender
	// shuts down due to either a txn commit or a txn abort. The method will
	// be called exactly once from cleanupTxnLocked.
	closeLocked()
}

func newRootTxnCoordSender(
	tcf *TxnCoordSenderFactory, txn *roachpb.Transaction, pri roachpb.UserPriority,
) kv.TxnSender {
	txn.AssertInitialized(context.TODO())

	if txn.Status != roachpb.PENDING {
		log.Fatalf(context.TODO(), "unexpected non-pending txn in RootTransactionalSender: %s", txn)
	}
	if txn.Sequence != 0 {
		log.Fatalf(context.TODO(), "cannot initialize root txn with seq != 0: %s", txn)
	}

	tcs := &TxnCoordSender{
		typ:                   kv.RootTxn,
		TxnCoordSenderFactory: tcf,
	}
	tcs.mu.txnState = txnPending
	tcs.mu.userPriority = pri

	// Create a stack of request/response interceptors. All of the objects in
	// this stack are pre-allocated on the TxnCoordSender struct, so this just
	// initializes the interceptors and pieces them together. It then adds a
	// txnLockGatekeeper at the bottom of the stack to connect it with the
	// TxnCoordSender's wrapped sender. First, each of the interceptor objects
	// is initialized.
	tcs.interceptorAlloc.txnHeartbeater.init(
		tcf.AmbientContext,
		tcs.stopper,
		tcs.clock,
		&tcs.metrics,
		tcs.heartbeatInterval,
		&tcs.interceptorAlloc.txnLockGatekeeper,
		&tcs.mu.Mutex,
		&tcs.mu.txn,
	)
	tcs.interceptorAlloc.txnCommitter = txnCommitter{
		st:


ed" data-dfn-type="callback" data-export data-level="1.1.3" data-lt="DecodeSuccessCallback|DecodeSuccessCallback()" id="callback-decodesuccesscallback-parameters">1.1.3.
Callback DecodeSuccessCallback() Parameters

decodedData, of type AudioBuffer

The AudioBuffer containing the decoded audio data.

1.1.4.
Callback DecodeErrorCallback() Parameters

error, of type DOMException

The error that occurred while decoding.

1.1.5.
Lifetime

Once created, an AudioContext will continue to play
sound until it has no more sound to play, or the page goes away.

1.1.6.
Lack of Introspection or Serialization Primitives

The Web Audio API takes a fire-and-forget approach to
audio source scheduling. That is, source nodes are created
for each note during the lifetime of the <


# asm 1: ldr >x0f=int32#11,=0x20d4074f
# asm 2: ldr >x0f=r10,=0x20d4074f
ldr r10,=0x20d4074f

# qhasm:   x08_stack = x08
# asm 1: str <x08=int32#1,>x08_stack=stack32#2
# asm 2: str <x08=r0,>x08_stack=[sp,#4]
str r0,[sp,#4]

# qhasm:   x09_stack = x09
# asm 1: str <x09=int32#5,>x09_stack=stack32#3
# asm 2: str <x09=r4,>x09_stack=[sp,#8]
str r4,[sp,#8]

# qhasm:   x0b_stack = x0b
# asm 1: str <x0b=int32#7,>x0b_stack=stack32#4
# asm 2: str <x0b=r6,>x0b_stack=[sp,#12]
str r6,[sp,#12]

# qhasm:   x0c_stack = x0c
# asm 1: str <x0c=int32#8,>x0c_stack=stack32#5
# asm 2: str <x0c=r7,>x0c_stack=[sp,#16]
str r7,[sp,#16]

# qhasm:   x0d_stack = x0d
# asm 1: str <x0d=int32#9,>x0d_stack=stack32#6
# asm 2: str <x0d=r8,>x0d_stack=[sp,#20]
str r8,[sp,#20]

# qhasm:   x0e_stack = x0e
# asm 1: str <x0e=int32#10,>x0e_stack=stack32#7
# asm 2: str <x0e=r9,>x0e_stack=[sp,#24]
str r9,[sp,#24]

# qhasm:   x0f_stack = x0f
# asm 1: str <x0f=int32#11,>x0f_stack=stack32#8
# asm 2: str <x0f=r10,>x0f_stack=[sp,#28]
str r10,[sp,#28]

# qhasm:   x10 = 0x15547fee
# asm 1: ldr >x10=int32#1,=0x15547fee
# asm 2: ldr >x10=r0,=0x15547fee
ldr r0,=0x15547fee

# qhasm:   x11 = 0xf4839313
# asm 1: ldr >x11=int32#5,=0xf4839313
# asm 2: ldr >x11=r4,=0xf4839313
ldr r4,=0xf4839313

# qhasm:   x12 = 0x017c189c
# asm 1: ldr >x12=int32#7,=0x017c189c
# asm 2: ldr >x12=r6,=0x017c189c
ldr r6,=0x017c189c

# qhasm:   x13 = 0xaf1c332a
# asm 1: ldr >x13=int32#8,=0xaf1c332a
# asm 2: ldr >x13=r7,=0xaf1c332a
ldr r7,=0xaf1c332a

# qhasm:   x14 = 0xde4d7c8c
# asm 1: ldr >x14=int32#9,=0xde4d7c8c
# asm 2: ldr >x14=r8,=0xde4d7c8c
ldr r8,=0xde4d7c8c

# qhasm:   x15 = 0x84997eec
# a


//				}
//				//impl := impl // not needed, for the .Implements slice element is not pointer.
//				bt.Implements = append(bt.Implements, impl)
//			}
//			t.Implements = nil
//
//			// remove unnamed interfaces whose have named underlieds.
//			// ToDo: avoid removing aliases to unnamed ones.
//			// (The work is moved to package datail page generation.)
//		}
//	}
//
//	return
//}

// This method should only be called when all selectors are confirmed.
func (d *CodeAnalyzer) registerNamedInterfaceMethodsForInvolvedTypeNames() {

	for _, pkg := range d.packageList {

		// ToDo:
		// sometime situations are much complicated.
		// An interface method might have several origins.
		// A global method table (key is method signature) is needed. Each method in the table
		// * might have several source postions/comments/documents.
		// (A global function table might be also needed. Method signature = func sig + method name)
		for _, tn := range pkg.AllTypeNames {
			// ToDo: in fact, some unexported interface names might also export methods.
			if !tn.Exported() {
				continue
			}

			t := tn.Denoting
			if _, ok := t.TT.Underlying().(*types.Interface); !ok {
				continue
			}

			for _, sel := range t.AllMethods {
				// need? registerFunctionForInvolvedTypeNames will also check it.
				if !token.IsExported(sel.Name()) {
					continue
				}

				//sig, ok := sel.Method.Type.TT.(*types.Signature)
				sig, ok := sel.Type().TT.(*types.Signature)
				if !ok {
					//panic("impossible")
					// Since 1.25, might be *types.Basic (invalid type)
					//log.Printf("~~~ not a types.Signature: %[1]T. \n\t%[1]v", sel.Type().TT)
					continue
				}

				params, results := sig.Params(), sig.Results()
				m, n := 0, 0
				if params != nil {
					m = params.Len()
				}
				if results != nil {
					n = results.Len()
				}
				if m == 0 && n == 0 {
					continue
				}

				im := &InterfaceMethod{
					InterfaceTypeName: tn,
					//Method:            sel.Method,
					Selector: sel,
				}
				_, _, _ = d.registerFunctionForInvolvedTypeNames(im)
			}
		}
	}
}

func (d *CodeAnalyzer) collectSelectors() {
	//log.Println("=== analyze struct promoted fields/methods ...")

	// The method set returned by types.NewMethodSet loses much info.
	// So a custom implementation is needed.

	//var printSelectors = func(t *TypeInfo) {
	//	if t.DirectSelectors != nil {
	//		for i, sel := range t.DirectSelectors {
	//			log.Println(i, ">", sel.Id)
	//		}
	//	}
	//}

	var selectorMaps []map[string]*Selector

	var smm = &SeleterMapManager{
		apply: func() (r map[string]*Selector) {
			if selectorMaps == nil {
				selectorMaps = make([]map[string]*Selector, 8, 32)
				for i := range selectorMaps {
					selectorMaps[i] = make(map[string]*Selector, 128)
				}
			}
			if n := len(selectorMaps); n > 0 {
				r = selectorMaps[n-1]
				selectorMaps = selectorMaps[:n-1]
				return
			}
			log.Println("more than", len(selectorMaps), "being used now.")
			r = make(map[string]*Selector, 128)
			return
		},
		release: func(


 server.DefaultServerOptions()
	flag.BoolVar(&serverOpts.LogSensitive, "log-sensitive", false, "enable sensitive logging (for debugging)")
	flag.Parse()

	configFiles := flag.Args()
	if len(configFiles) == 0 {
		w := flag.CommandLine.Output() // may be os.Stderr - but not necessarily
		fmt.Fprintf(w, "usage: %s [...flags...] config_1.yaml ... config_n.yaml\n", os.Args[0])
		flag.PrintDefaults()
		fmt.Fprintln(w, "")
		os.Exit(1)
	}

	configureLogging(logLevel, logHumanReadable)

	return configFiles
}

func configureLogging(logLevel string, logHumanReadable bool) {
	level, err := zerolog.ParseLevel(logLevel)
	if err != nil {
		level = zerolog.InfoLevel
	}
	zerolog.SetGlobalLevel(level)

	zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
	if logHumanReadable {
		log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stdout})
	}
}
package server

import (
	"encoding/json"
	"fmt"
	"strings"

	internal "github.com/jr200/nats-iam-broker/internal"

	"github.com/nats-io/jwt/v2"
	"github.com/rs/zerolog/log"
)

// RoleBindingStrategy defines the strategy for matching role bindings.
type RoleBindingStrategy string

const (
	// StrategyBestMatch selects the binding with the most matching criteria.
	StrategyBestMatch RoleBindingStrategy = "best_match"
	// StrategyStrict requires all match criteria in a binding to succeed.
	StrategyStrict RoleBindingStrategy = "strict"
)

// UnmarshalYAML implements the yaml.Unmarshaler interface for RoleBindingStrategy.
func (rbs *RoleBindingStrategy) UnmarshalYAML(unmarshal func(interface{}) error) error {
	var str string
	if err := unmarshal(&str); err != nil {
		return err
	}

	strLower := strings.ToLower(str)
	switch strLower {
	case string(StrategyStrict), string(StrategyBestMatch):
		*rbs = RoleBindingStrategy(strLower)
		return nil
	default:
		// Default to best_match if the value is empty or unrecognized
		if strLower == "" {
			log.Warn().Msgf("role_binding_matching_strategy is empty, defaulting to '%s'", StrategyBestMatch)
			*rbs = StrategyBestMatch
			return nil
		}
		log.Warn().Msgf("unrecognized role_binding_matching_strategy '%s', defaulting to '%s'", str, StrategyBestMatch)
		*rbs = StrategyBestMatch
		return nil // Or return an error if you want to reject invalid values: fmt.Errorf("invalid role binding strategy: %s", str)
	}
}

// Struct definitions
type Rbac struct {
	Accounts                    []UserAccountInfo   `yaml:"user_accounts"`
	RoleBinding                 []RoleBinding       `yaml:"role_binding"`
	Roles                       []Role              `yaml:"roles"`
	TokenMaxExpiry              Duration            `yaml:"token_max_expiration"`
	RoleBindingMatchingStrategy RoleBindingStrategy `yaml:"role_binding_matching_strategy"`
}

type UserAccountInfo struct {
	Name        string `yaml:"name"`
	PublicKey   string `yaml:"public_key"`
	SigningNKey NKey   `yaml:"signing_nkey"`
}

type RoleBinding struct {
	Account        string   `yaml:"user_account"`
	Roles          []string `yaml:"roles"`
	TokenMaxExpiry Duration `yaml:"token_max_expiration"`
	Match          []Match  `yaml:"match"`
}

type Match struct {
	Claim      string `yaml:"claim,omitempty"`
	Value      string `yaml:"value,omitempty"`
	Permission string `yaml:"permission,omitempty"`


thread_rwlock_trywrlock
WRAPPER_ENTRY_SYSTEM_V pthread_rwlock_unlock
WRAPPER_ENTRY_SYSTEM_V pthread_rwlock_wrlock
WRAPPER_ENTRY_SYSTEM_V pthread_rwlockattr_destroy
WRAPPER_ENTRY_SYSTEM_V pthread_rwlockattr_getpshared
WRAPPER_ENTRY_SYSTEM_V pthread_rwlockattr_init
WRAPPER_ENTRY_SYSTEM_V pthread_rwlockattr_setpshared
WRAPPER_ENTRY_SYSTEM_V pthread_self
WRAPPER_ENTRY_SYSTEM_V pthread_setcancelstate
WRAPPER_ENTRY_SYSTEM_V pthread_setcanceltype
WRAPPER_ENTRY_SYSTEM_V pthread_setconcurrency
WRAPPER_ENTRY_SYSTEM_V pthread_setschedparam
WRAPPER_ENTRY_SYSTEM_V pthread_setspecific
WRAPPER_ENTRY_SYSTEM_V pthread_testcancel

#string.h
WRAPPER_ENTRY_SYSTEM_V memchr
WRAPPER_ENTRY_SYSTEM_V memcmp
WRAPPER_ENTRY_SYSTEM_V memcpy
WRAPPER_ENTRY_SYSTEM_V memmove

#if !defined(__OpenBSD__)\
 && !defined(__FreeBSD__)\
 && !defined(__NetBSD__)
#apparently dlsym uses memset, which leads to


="ミュージックガンガン!2 PROMOTION CD">東方散楽祭
ミュージックガンガン!2 PROMOTION CD

	原曲
ネクロファンタジア

东方妖妖梦　～ Perfect Cherry Blossom.

11	東方不死鳥	02:00

	编曲	COSIO

	社团	太东#ZUNTATA

	原曲
月まで届け、不死の煙

东方永夜抄　～ Imperishable Night.

<td id="12" class


Scraper.svg?style=flat&label=Issues&maxAge=2592000)](https://www.github.com/harismuneer/Ultimate-Facebook-Scraper/issues)

If you face any issue, you can create a new issue in the Issues Tab and I will be glad to help you out.

## License
[![MIT](https://img.shields.io/cocoapods/l/AFNetworking.svg?style=style&label=License&maxAge=2592000)](../master/LICENSE)

Copyright (c) 2018-present, harismuneer, Hassaan-Elahi
# 3D ResNets for Action Recognition

## Update (2018/2/21)

Our paper "Can Spatiotemporal 3D CNNs Retrace the History of 2D CNNs and ImageNet?" is accepted to CVPR2018!
We update the paper information.

## Update (2018/01/16)

We uploaded some of fine-tuned models on UCF-101 and HMDB-51.

* ResNeXt-101 fine-tuned on UCF-101 (split1)
* ResNeXt-101 (64 frame inputs) fine-tuned on UCF-101 (split1)
* ResNeXt-101 fine-tuned on HMDB-51 (split1)
* ResNeXt-101 (64 frame inputs) fine-tuned on HMDB-51 (split1)

## Update (2017/11/27)

We published [a new paper](https://arxiv.org/abs/1711.09577) on arXiv.
We also added the following new models and their Kinetics pretrained models in this repository.

* ResNet-50, 101, 152, 200
* Pre-activation ResNet-200
* Wide ResNet-50
* ResNeXt-101
* DenseNet-121, 201

In addition, we supported new datasets (UCF-101 and HDMB-51) and fine-tuning functions.

Some minor changes are included.

* Outputs are normalized by softmax in test.
  * If you do not want to perform the normalization, please use ```--no_softmax_in_test``` option.

## Summary

This is the PyTorch code for the following papers:

[
Kensho Hara, Hirokatsu Kataoka, and Yutaka Satoh,
"Can Spatiotemporal 3D CNNs Retrace the History of 2D CNNs and ImageNet?",
Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 6546-6555, 2018.
](http://openaccess.thecvf.com/content_cvpr_2018/html/Hara_Can_Spatiotemporal_3D_CVPR_2018_paper.html)

[
Kensho Hara, Hirokatsu Kataoka, and Yutaka Satoh,
"Learning Spatio-Temporal Features with 3D Residual Networks for Action Recognition",
Proceedings of the ICCV Workshop on Action, Gesture, and Emotion Recognition, 2017.
](http://openaccess.thecvf.com/content_ICCV_2017_workshops/papers/w44/Hara_Learning_Spatio-Temporal_Features_ICCV_2017_paper.pdf)

This code includes training, fine-tuning and testing on Kinetics, ActivityNet, UCF-101, and HMDB-51.
**If you want to classify your videos or extract video features of them using our pretrained models,
use [this code](https://github.com/kenshohara/video-classification-3d-cnn-pytorch).**

**The Torch (Lua) version of this code is available [here](https://github.com/kenshohara/3D-ResNets).**
Note that the Torch version only includes ResNet-18, 34, 50, 101, and 152.

## Citation

If you use this code or pre-trained


);
    _spriteBackgroundCoins.scale = 0.35;
    _spriteBackgroundCoins.position = const Offset(105.0, 10.0);
    addChild(_spriteBackgroundCoins);

    _coinDisplay = ScoreDisplay(_sheetUI);
    _coinDisplay.position = const Offset(252.0, 49.0);
    _spriteBackgroundCoins.addChild(_coinDisplay);

    laserLevel = _gameState.laserLevel;
  }

  final SpriteSheet _sheetUI;
  final SpriteSheet _sheetGame;
  final PersistantGameState _gameState;

  int laserLevel = 0;

  static const double normalScrollSpeed = 2.0;

  double scrollSpeed = normalScrollSpeed;

  double _scrollSpeedTarget = normalScrollSpeed;

  EnemyBoss? boss;

  late Sprite _spriteBackgroundScore;
  late ScoreDisplay _scoreDisplay;
  late Sprite _spriteBackgroundCoins;
  late ScoreDisplay _coinDisplay;

  int get score => _scoreDisplay.score;

  set score(int score) {
    _scoreDisplay.score = score;
    flashBackgroundSprite(_spriteBackgroundScore);
  }

  int get coins => _coinDisplay.score;

  void addCoin(Coin c) {
    // Animate coin to the top of the screen
    Offset startPos = convertPointFromNode(Offset.zero, c);
    Offset finalPos = const Offset(30.0, 30.0);
    Offset middlePos = Offset((startPos.dx + finalPos.dx) / 2.0 + 50.0,
        (startPos.dy + finalPos.dy) / 2.0);

    List<Offset> path = <Offset>[startPos, middlePos, finalPos];

    Sprite sprite = Sprite(texture: _sheetGame["coin.png"]!);
    sprite.scale = 0.7;

    MotionSpline spline = MotionSpline(
      setter: (Offset a) => sprite.position = a,
      points: path,
      duration: 0.5,
    );
    spline.tension = 0.25;
    MotionTween rotate = MotionTween<double>(
      setter: (a) => sprite.rotation = a,
      start: 0.0,
      end: 360.0,
      duration: 0.5,
    );
    MotionTween scale = MotionTween<double>(
      setter: (a) => sprite.scale = a,
      start: 0.7,
      end: 1.2,
      duration: 0.5,
    );
    MotionGroup group = MotionGroup(motions: [spline, rotate, scale]);
    sprite.motions.run(
      MotionSequence(
        motions: [
          group,
          MotionRemoveNode(node: sprite),
          MotionCallFunction(
            callback: () {
              _coinDisplay.score += 1;
              flashBackgroundSprite(_spriteBackgroundCoins);
            },
          ),
        ],
      ),
    );

    addChild(sprite);
  }

  void activatePowerUp(PowerUpType type) {
    if (type == PowerUpType.shield) {
      _shieldFrames += _gameState.powerUpFrames(type);
    } else if (type == PowerUpType.sideLaser) {
      _sideLaserFrames += _gameState.powerUpFrames(type);
    } else if (type == PowerUpType.speedLaser) {
      _speedLaserFrames += _gameState.powerUpFrames(type);
    } else if (type == PowerUpType.speedBoost) {
      _speedBoostFrames += _gameState.powerUpFrames(type);
      _shieldFrames += _gameState.powerUpFrames(type) + 60;
    }
  }

  int _shieldFrames = 0;
  bool get shieldActive => _shieldFrames > 0 || _speedBoostFrames > 0;
  bool get shieldDeactivating =>
      math.max(_shieldFrames, _speedBoostFrames) > 0 &&
      math.max(_shieldFrames, _speedBoostFrames) < 6


data-orientation='horizontal']:after {
  left: 50%;
  min-width: 8px;
  transform: translateX(-50%);
}

/* <DEPRECATED> */
.p-DockPanel-handle[data-orientation='vertical']:after,
/* </DEPRECATED> */
.lm-DockPanel-handle[data-orientation='vertical']:after {
  top: 50%;
  min-height: 8px;
  transform: translateY(-50%);
}

/* <DEPRECATED> */
.p-DockPanel-overlay, /* </DEPRECATED> */
.lm-DockPanel-overlay {
  z-index: 3;
  box-sizing: border-box;
  pointer-events: none;
}

/* <DEPRECATED> */
.p-DockPanel-overlay.p-mod-hidden, /* </DEPRECATED> */
.lm-DockPanel-overlay.lm-mod-hidden {
  display: none !important;
}

/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/

/* <DEPRECATED> */
.p-Menu, /* </DEPRECATED> */
.lm-Menu {
  z-index: 10000;
  position: absolute;
  white-space: nowrap;
  overflow-x: hidden;
  overflow-y: auto;
  outline: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

/* <DEPRECATED> */
.p-Menu-content, /* </DEPRECATED> */
.lm-Menu-content {
  margin: 0;
  padding: 0;
  display: table;
  list-style-type: none;
}

/* <DEPRECATED> */
.p-Menu-item, /* </DEPRECATED> */
.lm-Menu-item {
  display: table-row;
}

/* <DEPRECATED> */
.p-Menu-item.p-mod-hidden,
.p-Menu-item.p-mod-collapsed,
/* </DEPRECATED> */
.lm-Menu-item.lm-mod-hidden,
.lm-Menu-item.lm-mod-collapsed {
  display: none !important;
}

/* <DEPRECATED> */
.p-Menu-itemIcon,
.p-Menu-itemSubmenuIcon,
/* </DEPRECATED> */
.lm-Menu-itemIcon,
.lm-Menu-itemSubmenuIcon {
  display: table-cell;
  text-align: center;
}

/* <DEPRECATED> */
.p-Menu-itemLabel, /* </DEPRECATED> */
.lm-Menu-itemLabel {
  display: table-cell;
  text-align: left;
}

/* <DEPRECATED> */
.p-Menu-itemShortcut, /* </DEPRECATED> */
.lm-Menu-itemShortcut {
  display: table-cell;
  text-align: right;
}

/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/

/* <DEPRECATED> */
.p-MenuBar, /* </DEPRECATED> */
.lm-MenuBar {
  outline: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;


ge.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.StaticFilters;

import java.util.UUID;

/**
 * @author tcontis
 */
public final class WoollySpider extends CardImpl {

    public WoollySpider(UUID ownerId, CardSetInfo setInfo) {
        super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
        this.subtype.add(SubType.SPIDER);

        this.power = new MageInt(2);
        this.toughness = new MageInt(3);

        // Reach
        this.addAbility(ReachAbility.getInstance());

        // Whenever Woolly Spider blocks a creature with flying, Woolly Spider gets +0/+2 until end of turn.
        this.addAbility(new BlocksCreatureTriggeredAbility(new BoostSourceEffect(0, 2, Duration.EndOfTurn), StaticFilters.FILTER_CREATURE_FLYING, false));
    }

    private WoollySpider(final WoollySpider card) {
        super(card);
    }

    @Override
    public WoollySpider copy() {
        return new WoollySpider(this);
    }
}
package mage.cards.w;

import mage.MageInt;
import mage.abilities.common.AllianceAbility;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;

import java.util.UUID;

/**
 * @author TheElk801
 */
public final class WittyRoastmaster extends CardImpl {

    public WittyRoastmaster(UUID ownerId, CardSetInfo setInfo) {
        super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");

        this.subtype.add(SubType.DEVIL);
        this.subtype.add(SubType.CITIZEN);
        this.power = new MageInt(3);
        this.toughness = new MageInt(2);

        // Alliance — Whenever another creature you control enters, Witty Roastmaster deals 1 damage to each opponent.
        this.addAbility(new AllianceAbility(new DamagePlayersEffect(1, TargetController.OPPONENT)));
    }

    private WittyRoastmaster(final WittyRoastmaster card) {
        super(card);
    }

    @Override
    public WittyRoastmaster copy() {
        return new WittyRoastmaster(this);
    }
}
package mage.cards.w;

import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.keyword.DefenderAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;

import java.util.UUID;

/**
 * @author TheElk801
 */
public final class WallOfRunes extends CardImpl {

    public WallOfRunes(UUID ownerId, CardSetInfo setInfo) {
        super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");

        this.subtype.add(SubType.WALL);
        this.power = new MageInt(0);
        this.toughness = new MageInt(4);

        // Defender
        this.addAbility(DefenderAbility.getInstance());

        // When Wall of Runes enters the battlefield, scry 1.
        this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1)));
    }

    private WallOfRunes(final WallOfRunes card) {
        super(card);
    }


Mesh = Mesh.MakeCube(Vector3f.Diagonal(1), Vector3f.Diagonal(-0.5f));
            var verts = new VertBitSet(8, false);
            verts.Set(0, true);
            var faces = RegionBoundary.GetIncidentFaces(cubeMesh, verts);
            Assert.That(faces.Count, Is.EqualTo(6));
        }

        [Test]
        public void TestIncidentFacesFromEdges()
        {
            var cubeMesh = Mesh.MakeCube(Vector3f.Diagonal(1), Vector3f.Diagonal(-0.5f));
            var edges = new


    L5_2(L6_2, L7_2)
      end
    end
    if L3_2 then
      L3_2 = false
      break
    end
  end
end

_ENV["C14A8D35D72F56FE9"]["prototype"]["F95E85C17B3ADACA5"] = function(A0_2)

  local L1_2, L2_2, L3_2, L4_2, L5_2
  L1_2 = A0_2
  L2_2 = C652C225D53D1B872
  L2_2 = L2_2.S511DEF29717431A3
  L2_2 = L2_2()
  L3_2 = L2_2
  L2_2 = L2_2.F6BB6C94367FB8083
  function L4_2()
    local L0_3, L1_3, L2_3, L3_3, L4_3, L5_3, L6_3, L7_3, L8_3, L9_3, L10_3
    L0_3 = C27B4379DDC700652
    L0_3 = L0_3.SABA1E69DEEFA2A52
    L0_3 = L0_3()
    L1_3 = L1_2
    L2_3 = L31_1.string
    L3_3 = L31_1.string
    L4_3 = "message/sort/"
    L3_3 = L3_3(L4_3)
    L4_3 = L31_1.string
    L5_3 = L0_3
    L4_3 = L4_3(L5_3)
    L3_3 = L3_3 .. L4_3
    L2_3 = L2_3(L3_3)
    L3_3 = L31_1.string
    L4_3 = "/item_initial_index.dat"
    L3_3 = L3_3(L4_3)
    L2_3 = L2_3 .. L3_3
    L1_3[1] = L2_3
    L1_3 = L1_2
    L2_3 = L31_1.string
    L3_3 = L31_1.string
    L4_3 = "message/sort/"
    L3_3 = L3_3(L4_3)
    L4_3 = L31_1.string
    L5_3 = L0_3
    L4_3 = L4_3(L5_3)
    L3_3 = L3_3 .. L4_3
    L2_3 = L2_3(L3_3)
    L3_3 = L31_1.string
    L4_3 = "/item_sort_table.dat"
    L3_3 = L3_3(L4_3)
    L2_3 = L2_3 .. L3_3
    L1_3[2] = L2_3
    L1_3 = L1_2
    L2_3 = L31_1.string
    L3_3 = L31_1.string
    L4_3 = "message/sort/"
    L3_3 = L3_3(L4_3)
    L4_3 = L31_1.string
    L5_3 = L0_3
    L4_3 = L4_3(L5_3)
    L3_3 = L3_3 .. L4_3
    L2_3 = L2_3(L3_3)
    L3_3 = L31_1.string
    L4_3 = "/item_initial_to_sort.dat"
    L3_3 = L3_3(L4_3)
    L2_3 = L2_3 .. L3_3
    L1_3[3] = L2_3
    L1_3 =


 TagMergeMode {
    unsafe fn from_value(value: &Value) -> Self {
        from_glib(gobject_sys::g_value_get_enum(value.to_glib_none().0))
    }
}

impl SetValue for TagMergeMode {
    unsafe fn set_value(value: &mut Value, this: &Self) {
        gobject_sys::g_value_set_enum(value.to_glib_none_mut().0, this.to_glib())
    }
}

#[cfg_attr(feature = "ser_de", derive(Serialize, Deserialize))]
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
pub enum TagScope {
    Stream,
    Global,
    #[doc(hidden)]
    __Unknown(i32),
}

#[doc(hidden)]
impl ToGlib for TagScope {
    type GlibType = gst_sys::GstTagScope;

    fn to_glib(&self) -> gst_sys::GstTagScope {
        match *self {
            TagScope::Stream => gst_sys::GST_TAG_SCOPE_STREAM,
            TagScope::Global => gst_sys::GST_TAG_SCOPE_GLOBAL,
            TagScope::__Unknown(value) => value,
        }
    }
}

#[doc(hidden)]
impl FromGlib<gst_sys::GstTagScope> for TagScope {
    fn from_glib(value: gst_sys::GstTagScope) -> Self {
        skip_assert_initialized!();
        match value {
            0 => TagScope::Stream,
            1 => TagScope::Global,
            value => TagScope::__Unknown(value),
        }
    }
}

impl StaticType for TagScope {
    fn static_type() -> Type {
        unsafe { from_glib(gst_sys::gst_tag_scope_get_type()) }
    }
}

impl<'a> FromValueOptional<'a> for TagScope {
    unsafe fn from_value_optional(value: &Value) -> Option<Self> {
        Some(FromValue::from_value(value))
    }
}

impl<'a> FromValue<'a> for TagScope {
    unsafe fn from_value(value: &Value) -> Self {
        from_glib(gobject_sys::g_value_get_enum(value.to_glib_none().0))
    }
}

impl SetValue for TagScope {
    unsafe fn set_value(value: &mut Value, this: &Self) {
        gobject_sys::g_value_set_enum(value.to_glib_none_mut().0, this.to_glib())
    }
}

#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
pub enum TaskState {
    Started,
    Stopped,
    Paused,
    #[doc(hidden)]
    __Unknown(i32),
}

#[doc(hidden)]
impl ToGlib for TaskState {
    type GlibType = gst_sys::GstTaskState;

    fn to_glib(&self) -> gst_sys::GstTaskState {
        match *self {
            TaskState::Started => gst_sys::GST_TASK_STARTED,
            TaskState::Stopped => gst_sys::GST_TASK_STOPPED,
            TaskState::Paused => gst_sys::GST_TASK_PAUSED,
            TaskState::__Unknown(value) => value,
        }
    }
}

#[doc(hidden)]
impl FromGlib<gst_sys::GstTaskState> for TaskState {
    fn from_glib(value: gst_sys::GstTaskState) -> Self {
        skip_assert_initialized!();
        match value {
            0 => TaskState::Started,
            1 => TaskState::Stopped,
            2 => TaskState::Paused,
            value => Tas


# Check 64bit FMA4 instructions

	.allow_index_reg
	.text
_start:

	vfmaddpd %ymm4,%ymm6,%ymm2,%ymm7
	vfmaddpd (%rcx),%ymm6,%ymm2,%ymm7
	vfmaddps %ymm4,%ymm6,%ymm2,%ymm7
	vfmaddps (%rcx),%ymm6,%ymm2,%ymm7
	vfmaddps %xmm4,0x01(%rdx,%rbx,8),%xmm7,%xmm11
	vfmaddps %xmm8,0x80(%rcx,%rax,4),%xmm6,%xmm4
	vfmaddsubpd %ymm4,%ymm6,%ymm2,%ymm7
	vfmaddsubpd (%rcx),%ymm6,%ymm2,%ymm7
	vfmaddsubps %ymm4,%ymm6,%ymm2,%ymm7
	vfmaddsubps (%rcx),%ymm6,%ymm2,%ymm7
	vfmaddpd %xmm4,%xmm6,%xmm2,%xmm7
	vfmaddpd (%rcx),%xmm6,%xmm2,%xmm7
	vfmaddpd %xmm4,(%rcx),%xmm2,%xmm7
	vfmaddps %xmm4,%xmm6,%xmm2,%xmm7
	vfmaddps (%rcx),%xmm6,%xmm2,%xmm7
	vfmaddps %xmm4,(%rcx),%xmm2,%xmm7
	vfmaddsubpd %xmm4,%xmm6,%xmm2,%xmm7
	vfmaddsubpd (%rcx),%xmm6,%xmm2,%xmm7
	vfmaddsubpd %xmm4,(%rcx),%xmm2,%xmm7
	vfmaddsubps %xmm4,%xmm6,%xmm2,%xmm7
	vfmaddsubps (%rcx),%xmm6,%xmm2,%xmm7
	vfmaddsubps %xmm4,(%rcx),%xmm2,%xmm7
	vfmaddsd %xmm4,%xmm6,%xmm2,%xmm7
	vfmaddsd (%rcx),%xmm6,%xmm2,%xmm7
	vfmaddsd %xmm4,(%rcx),%xmm2,%xmm7
	vfmaddss %xmm4,%xmm6,%xmm2,%xmm7
	vfmaddss (%rcx),%xmm6,%xmm2,%xmm7
	vfmaddss %xmm4,(%rcx),%xmm2,%xmm7
	vfnmaddpd %ymm4,%ymm6,%ymm2,%ymm7
	vfnmaddpd (%rcx),%ymm6,%ymm2,%ymm