ALIGN_CLIP);
      box2.align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE | FL_ALIGN_CLIP);
    }

  private:
    Fl_Button button1 {50, 50, 75, 25, "Button 1"};
    Fl_Repeat_Button button2 {50, 100, 200, 75, "Button 2"};
    Fl_Box box1 {50, 200, 200, 20, "Button 1 clicked 0 times"};
    Fl_Box box2 {50, 230, 200, 25, "Button 2 clicked 0 times"};
    int button1_clicked = 0;
    int button2_clicked = 0;
  };
}

auto main(int argc, char *argv[]) -> int {
  auto window = Examples::Main_Window {};
  window.show(argc, argv);
  return Fl::run();
}
#include <iostream>
#include <gtkmm.h>

using namespace Glib;
using namespace Gtk;

class Form : public Window {
public:
  Form() {
    add(scrolledWindow);
    scrolledWindow.add(fixed);

    button.set_label("Save...");
    fixed.add(button);
    fixed.move(button, 10, 10);
    button.signal_button_release_event().connect([&](GdkEventButton* event) {
      FileChooserDialog saveFileDialog("", FILE_CHOOSER_ACTION_SAVE);
      saveFileDialog.add_button("Cancel", RESPONSE_CANCEL);
      saveFileDialog.add_button("Open", RESPONSE_OK);
      saveFileDialog.set_current_folder(ustring::compose("%1/Desktop", ustring(getenv("HOME"))));
      saveFileDialog.set_current_name("MyFile.txt");
      saveFileDialog.set_transient_for(*this);

      Glib::RefPtr<Gtk::FileFilter> fileFilter = Gtk::FileFilter::create();
      fileFilter->set_name("Text Files (*.txt)");
      fileFilter->add_pattern("*.txt");
      saveFileDialog.add_filter(fileFilter);
      fileFilter = Gtk::FileFilter::create();
      fileFilter->set_name("All Files (*.*)");
      fileFilter->add_pattern("*.*");
      saveFileDialog.add_filter(fileFilter);

      if (saveFileDialog.run() == RESPONSE_OK)
        label.set_text(ustring::compose("File = %1", ustring(saveFileDialog.get_filename())));
      return true;
    });

    label.set_text("File = ");
    fixed.add(label);
    fixed.move(label, 10, 50);

    set_title("SaveFileDialog example");
    resize(300, 300);
    show_all();
  }

private:
  Fixed fixed;
  ScrolledWindow scrolledWindow;
  Button button;
  Label label;
};

int main(int argc, char* argv[]) {
  RefPtr<Application> application = Application::create(argc, argv);
  Form form;
  return application->run(form);
}
#include <iomanip>
#include <gtkmm.h>

using namespace Glib;
using namespace Gtk;

class Form : public Window {
public:
  Form() {
    add(scrolledWindow);
    scrolledWindow.add(fixed);

    label.set_text(ustring::format(std::fixed, std::setprecision(1), (double)counter / 10));
    label.override_color(Gdk::RGBA("#1E90FF"));
    Pango::FontDescription textFont("Arial");
    textFont.set_size(48 * PANGO_SCALE);
    textFont.set_style(Pango::Style::STYLE_ITALIC);
    textFont.set_weight(Pango::Weight::WEIGHT_BOLD);


       // int
    DV_PARAM(P_BUTTONS, Buttons);              // int
    DV_PARAM(P_NUMBUTTONS, NumButtons);        // int
}

/// A file was drag-dropped into the application window. Includes also coordinates and UI element if applicable.
DV_EVENT(E_UIDROPFILE, UIDropFile)
{
    DV_PARAM(P_FILENAME, FileName);            // String
    DV_PARAM(P_ELEMENT, Element);              // UiElement pointer
    DV_PARAM(P_X, X);                          // int
    DV_PARAM(P_Y, Y);                          // int
    DV_PARAM(P_ELEMENTX, ElementX);            // int (only if element is non-null)
    DV_PARAM(P_ELEMENTY, ElementY);            // int (only if element is non-null)
}

}


9
  .long Opef10,Opef50,Opef90,Ope5d0,Ope5d8,Ope5e0,Ope5e8,Ope5f0 ;@ e5f0
  .long Ope5f8,Ope5f9,Ope6d0,Ope6d8,Ope6e0,Ope6e8,Ope6f0,Ope6f8 ;@ e6f8
  .long Ope6f9,Ope7d0,Ope7d8,Ope7e0,Ope7e8,Ope7f0,Ope7f8,Ope7f9 ;@ e7f9
  .rept 0x721
  .long 0,0,0,0,0,0,0,0
  .endr
  .hword 0x0038,0x0008,0x0048,0x0057,0x0061,0x0077,0x0081,0x0098
  .hword 0x00a8,0x00b1,0x00c1,0x0002,0x00d1,0x0003,0x00e8,0x0008
  .hword 0x00f8,0x0108,0x0118,0x0128,0x0138,0x0141,0x0151,0x0002
  .hword 0x0161,0x0003,0x0178,0x0008,0x0188,0x0198,0x01a8,0x01b8
  .hword 0x01c8,0x01d1,0x01e1,0x0000,0x0046,0x01f8,0x0208,0x0218
  .hword 0x0227,0x0231,0x0247,0x0251,0x0268,0x0278,0x0281,0x0291
  .hword 0x02a1,0x02b1,0x02c1,0x0003,0x02d8,0x02e8,0x02f8,0x0307
  .hword 0x0311,0x0327,0x0331,0x0348,0x0358,0x0361,0x0371,0x0006
  .hword 0x0388,0x0398,0x03a8,0x03b7,0x03c1,0x03d7,0x03e1,0x03f8
  .hword 0x0408,0x0411,0x0421,0x0006,0x0438,0x0448,0x0458,0x0467
  .hword 0x0471,0x0487,0x0491,0x04a8,0x04b8,0x04c1,0x04d1,0x0006
  .hword 0x04e8,0x0008,0x04f8,0x0507,0x0511,0x0527,0x0531,0x0548
  .hword 0x0558,0x0561,0x0571,0x0002,0x0581,0x0003,0x0598,0x0008
  .hword 0x05a8,0x05b8,0x05c8,0x05d8,0x05e8,0x05f1,0x0601,0x0002
  .hword 0x0611,0x0003,0x0628,0x0008,0x0638,0x0648,0x0658,0x0668
  .hword 0x0678,0x0681,0x0691,0x0000,0x0046,0x01f8,0x0208,0x0218
  .hword 0x0227,0x0231,0x0247,0x0251,0x0268,0x0278,0x0281,0x0291
  .hword 0x02a1,0x02b1,0x02c1,0x0003,0x02d8,0x02e8,0x02f8,0x0307
  .hword 0x0311,0x0327,0x0331,0x0348,


.pattern(this.letterSpacesAndSpecificCharacters)],
      numberOfBuilding: ['', Validators.pattern(this.letterNumberAndSpaces)],
      numberOfApartment: ['', Validators.pattern(this.letterNumberAndSpaces)],
    }),
    contact: this.fb.group({
      email: ['', Validators.email],
      phone: ['', [Validators.pattern(this.phoneNumber),Validators.required]]
    })
  });

  private handleError(errorResponse: HttpErrorResponse) {
    if (errorResponse.error instanceof ErrorEvent) {
      console.error('Client side error', errorResponse.error.message);
    } else {
      console.error('Server side error', errorResponse);
    }
    return throwError('Service problem');
  }

  addCustomer(customer: Customer) {
   return this.httpClient.post(this.URL + "/AddCustomer", customer);
  }

  //daje typy klientów
  getTypesOfCustomer() {
    return this.httpClient.get<TypeOfCustomer>(this.URL + '/GetTypes').pipe(catchError(this.handleError));
  }
  //zwróc listę klientów
  getCustomers() {
    return this.httpClient.get<Customer>(this.URL + '/GetAllCustomers').pipe((catchError(this.handleError)));
  }
  //zwroc liste konkretnych klientów
  getConcreteCustomers(id:number) {
    return this.httpClient.get<Customer>(`${this.URL}/${'GetConcreteCustomers/'}${id}`).pipe((catchError(this.handleError)));
  }
  //Klinet po Id
  getCustomer(id:number) {
    return this.httpClient.get<Customer>(`${this.URL}/${'GetCustomer/'}${id}`).pipe((catchError(this.handleError)));
  }
  //updateCustomer
  updateCustomer(customer: Customer) {
    return this.httpClient.put<Customer>(`${this.URL}/${'PutCustomer/'}${customer.id}`, customer);
  }
  deleteCustomer(id:number) {
    return this.httpClient.delete(`${this.URL}/${'DeleteCustomer/'}${id}`);
  }

  checkRequiredInstitutionName(id: number) {
    console.log(id);
    const companyNameControl = this.formModel.get('companyName');
    if(id == 2) {
      companyNameControl.setValidators(Validators.required);
      this.check=true;
      console.log('required');

    } else {
      companyNameControl.clearValidators();
    }
    companyNameControl.updateValueAndValidity();
  }

  formErrors = {
    'typeOfClient': '',
    'companyName': '',
    'name': '',
    'surname': '',
    'province': '',
    'city': '',
    'zipCode': '',
    'street': '',
    'numberOfBuilding': '',
    'numberOfApartment': '',
    'email': '',
    'phone': '',
  };

  validationMessages = {
    'typeOfClient': {
      'required': 'Typ klienta jest wymagany.',
    },
    'companyName': {
      'required:': 'Nazwa przedsiębiorstwa jest wymagana.'
    },
    'name': {
      'pattern': 'Nieprawidłowa sekwencja znaków. Sprawdź pisownię.',
      'required': 'Imię jest wymagane.'
    },
    'surname': {
      'pattern': 'Nieprawidłowa sekwencja znaków. Sprawdź pisownię.',
      'required': 'Nazwisko jest wymagane.'
    },
    'province': {
      'pattern': 'Nieprawidłowa sekwencja znaków. Sprawdź pisownię.',
    },
    'city': {
      'pattern': 'Nieprawidłowa sekwencja znaków. Sprawdź pisownię.',
    },
    'zipCode': {
      'pattern': 'Nieprawidłow


;
    }
    return result;
  }

  double mergeConnectivity(Subgraph s, int row, double result,
      double scaleFactor) {
    while (s != null && getRowEntry(s, row) == null)
      s = s.parent;
    if (s != null) {
      RowEntry entry = getRowEntry(s, row);
      double connectivity = entry.contribution / entry.count;
      result = connectivity * 0.3 + (0.7) * result;
      s = s.parent;
    }
    return result;
  }

  RowEntry getRowEntry(Subgraph s, int row) {
    key.s = s;
    key.rank = row;
    return map[key];
  }

  void copyConstraints(NestingTree tree) {
    if (tree.subgraph != null)
      tree.sortValue = tree.subgraph.rowOrder.toDouble();
    for (int i = 0; i < tree.contents.length; i++) {
      Object child = tree.contents[i];
      if (child is Node) {
        child.sortValue = child.rowOrder.toDouble();
      } else {
        copyConstraints(child);
      }
    }
  }

  void init(DirectedGraph g) {
    super.init(g);
    initCalled = true;

    for (int row = 0; row < g.ranks.length; row++) {
      Rank rank = g.ranks[row];

      NestingTree tree = NestingTree.buildNestingTreeForRank(rank);
      copyConstraints(tree);
      tree.recursiveSort(true);
      rank.clear();
      tree.repopulateRank(rank);

      for (int j = 0; j < rank.count(); j++) {
        Node n = rank[j];
        Subgraph s = n.parent;
        while (s != null) {
          addRowEntry(s, row);
          s = s.parent;
        }
      }
    }
  }

  void postSort() {
    super.postSort();
    if (initCalled)
      updateRank(rank);
  }

  void updateRank(Rank rank) {
    for (int j = 0; j < rank.count(); j++) {
      Node n = rank[j];
      Subgraph s = n.parent;
      while (s != null) {
        getRowEntry(s, currentRow).reset();
        s = s.parent;
      }
    }
    for (int j = 0; j < rank.count(); j++) {
      Node n = rank[j];
      Subgraph s = n.parent;
      while (s != null) {
        RowEntry entry = getRowEntry(s, currentRow);
        entry.count++;
        entry.contribution += n.index;
        s = s.parent;
      }
    }
  }

}
// Copyright 2015 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/// Type descriptors.
library saga.flow.types;

class Type {
  final String name;

  const Type(this.name);

  toString() => "Type(${name})";
}

class Field {
  final int offset;
  final String name;
  final Type type;

  Field(this.offset, this.name, this.type);
}

class ReferenceType extends Type {
  final Map<int, Field> fieldsByOffset;

  ReferenceType(name, fields)
    : fieldsByOffset = new Map.fromIterable(fields, key: (field) => field.offset),
      super(name);
}

class ArrayType extends ReferenceType {
  final Type elementType;

  static const lengthOffset =


s == io->physics.targetpos
		   || ARX_COLLISION_Move_Cylinder(&phys, io, 40, CFLAG_JUST_TEST | CFLAG_NPC | CFLAG_NO_HEIGHT_MOD)
		) {
			if(closerThan(phys.cyl.origin, pos2, 100.f)) {
				io->_npcdata->pathfind.pathwait = 0;
				return false;
			}
		}
	}

	return ARX_NPC_LaunchPathfind_End(io, target, pos2);
}

bool ARX_NPC_SetStat(Entity & io, std::string_view statname, float value) {

	arx_assert(io.ioflags & IO_NPC);

	if(statname == "armor_class") {
		io._npcdata->armor_class = value < 0 ? 0 : value;
	} else if(statname == "backstab_skill" || statname == "backstabskill") {
		io._npcdata->backstab_skill = value < 0 ? 0 : value;
	} else if(statname == "backstab") {
		if(value == 0) {
			io._npcdata->npcflags &= ~NPCFLAG_BACKSTAB;
		} else {
			io._npcdata->npcflags |= NPCFLAG_BACKSTAB;
		}
	} else if(statname == "reach") {
		io._npcdata->reach = value < 0 ? 0 : value;
	} else if(statname == "critical") {
		io._npcdata->critical = value < 0 ? 0 : value;
	} else if(statname == "absorb") {
		io._npcdata->absorb = value < 0 ? 0 : value;
	} else if(statname == "damages") {
		io._npcdata->damages = value < 0 ? 0 : value;
	} else if(statname == "tohit") {
		io._npcdata->tohit = value < 0 ? 0 : value;
	} else if(statname == "aimtime") {
		io._npcdata->aimtime = std::chrono::duration<float, std::milli>(std::max(value, 0.f));
	} else if(statname == "life") {
		io._npcdata->lifePool.max = io._npcdata->lifePool.current = value < 0 ? 0.0000001f : value;
	} else if(statname == "mana") {
		io._npcdata->manaPool.max = io._npcdata->manaPool.current = value < 0 ? 0 : value;
	} else if(statname == "resistfire") {
		io._npcdata->resist_fire = static_cast<unsigned char>(glm::clamp(value, 0.f, 100.f));
	} else if(statname == "resistpoison") {
		io._npcdata->resist_poison = static_cast<unsigned char>(glm::clamp(value, 0.f, 100.f));
	} else if(statname == "resistmagic") {
		io._npcdata->resist_magic = static_cast<unsigned char>(glm::clamp(value, 0.f, 100.f));
	} else {
		return false;
	}

	return true;
}

/*!
 * \brief Sets a New MoveMode for a NPC
 */
void ARX_NPC_ChangeMoveMode(Entity * io, MoveMode MOVEMODE) {

	if(!io || !(io->ioflags & IO_NPC)) {
		return;
	}

	switch(MOVEMODE) {
		case RUNMODE: {
			if(isCurrentAnimation(io, 0, ANIM_WALK) || isCurrentAnimation(io, 0, ANIM_WALK_SNEAK)) {
				changeAnimation(io, ANIM_RUN, 0, true);
			}
			break;
		}
		case WALKMODE: {
			if(isCurrentAnimation(io, 0, ANIM_RUN) || isCurrentAnimation(io, 0, ANIM_WALK


ts', 'source': 'tifffile.py'},
    65440: {'name': 'NDPI_FocusPointRegions', 'source': 'tifffile.py'},
    65441: {'name': 'NDPI_CaptureMode', 'source': 'tifffile.py'},
    # NDPI_NDPSN is not the official name
    65442: {'name': 'NDPI_NDPSN', 'altnames': {'NDPI_ScannerSerialNumber'}, 'source': 'hamamatsu'},
    65444: {'name': 'NDPI_JpegQuality', 'source': 'tifffile.py'},
    65445: {'name': 'NDPI_RefocusInterval', 'source': 'tifffile.py'},
    65446: {'name': 'NDPI_FocusOffset', 'source': 'tifffile.py'},
    65447: {'name': 'NDPI_BlankLines', 'source': 'tifffile.py'},
    65448: {'name': 'NDPI_FirmwareVersion', 'source': 'tifffile.py'},
    65449: {'name': 'NDPI_PROPERTY_MAP', 'source': 'hamamatsu'},
    65450: {'name': 'NDPI_LabelObscured', 'source': 'tifffile.py'},
    65451: {'name': 'NDPI_EMISSION_WAVELENGTH', 'source': 'hamamatsu'},
    65453: {'name': 'NDPI_LampAge', 'source': 'tifffile.py'},
    65454: {'name': 'NDPI_ExposureTime', 'source': 'tifffile.py'},
    65455: {'name': 'NDPI_FocusTime', 'source': 'tifffile.py'},
    65456: {'name': 'NDPI_ScanTime', 'source': 'tifffile.py'},
    65457: {'name': 'NDPI_WriteTime', 'source': 'tifffile.py'},
    65458: {'name': 'NDPI_FullyAutoFocus', 'source': 'tifffile.py'},
    65500: {'name': 'NDPI_DefaultGamma', 'source': 'tifffile.py'},
    # End Hamamatsu tags
    65535: {'name': 'DCSHUESHIFTVALUES'},
})

Tag.SubIFD.tagset = Tag
Tag.GlobalParametersIFD.tagset = Tag


 get email => 'البريد الإلكتروني';

  @override
  String get emailAddress => 'عنوان البريد الإلكتروني';

  @override
  String get password => 'كلمة المرور';

  @override
  String get firstName => 'الاسم الأول';

  @override
  String get lastName => 'اسم العائلة';

  @override
  String get dontHaveAccount => 'ليس لديك حساب؟ ';

  @override
  String get alreadyHaveAccount => 'لديك حساب بالفعل؟ ';

  @override
  String get checkYourMail => 'تحقق من بريدك الإلكتروني';

  @override
  String get enterVerificationCode =>
      'يرجى إدخال الرمز المكون من 4 أرقام المرسل إلى بريدك الإلكتروني hello**@gmail.com.';

  @override
  String get didntGetCode => 'لم تحصل على رمز؟ ';

  @override
  String get clickToResend => 'انقر لإعادة الإرسال';

  @override
  String get didNotReceiveEmail =>
      'لم تستلم البريد الإلكتروني؟ تحقق من مجلد الرسائل غير المرغوب فيها. أو ';

  @override
  String get tryAnotherEmail => 'جرب عنوان بريد إلكتروني آخر';

  @override
  String get learnFlutterTitle => 'تعلم Flutter مع دروس شاملة.';

  @override
  String get learnFlutterSubtitle => 'دليل خطوة بخطوة لبناء تطبيقات Flutter.';

  @override
  String get learnFlutterDescription =>
      'احصل على إشعارات للدروس الجديدة والتحديثات.';

  @override
  String get joinCommunityTitle => 'انضم إلى مجتمع Flutter.';

  @override
  String get joinCommunitySubtitle => 'تواصل مع مطوري Flutter الآخرين.';

  @override
  String get joinCommunityDescription => 'شارك في أحداث المجتمع والمناقشات.';

  @override
  String get buildDeployTitle => 'ابن ونشر تطبيقات Flutter بسهولة.';

  @override
  String get buildDeploySubtitle => 'احصل على أدوات وموارد لتطوير التطبيقات.';

  @override
  String get buildDeployDescription => 'انشر تطبيقاتك على منصات متعددة بسهولة.';

  @override
  String passwordMinLengthValidation(String minLength) {
    return 'يجب أن تحتوي كلمة المرور على $minLength أحرف على الأقل';
  }

  @override
  String get passwordNumberValidation =>
      'يجب أن تحتوي كلمة المرور على رقم واحد على الأقل';

  @override
  String get passwordLowerCaseValidation =>
      'يجب أن تحتوي كلمة المرور على حرف صغير واحد على الأقل';

  @override
  String get passwordUpperCaseValidation =>
      'يجب أن تحتوي كلمة المرور على حرف كبير واحد على الأقل';

  @override
  String get passwordSpecialCharValidation =>
      'يجب أن تحتوي كلمة المرور على رمز خاص واحد على الأقل';
}
part of '../router.dart';

List<GoRoute> _authenticationRoutes(ref) {
  return [
    GoRoute(
      path: Routes.login,
      name: Routes.login,
      pageBuilder: (context, state) {
        return const MaterialPage(child: LoginPage());
      },
      routes: [
        GoRoute(
          path: Routes.registration,
          name: Routes.registration,
          pageBuilder: (context, state) =>
              const MaterialPage(child: RegistrationPage()),
        ),
        GoRoute(
          path: Routes.resetPassword,
          name: Routes.resetPassword,
          pageBuilder: (context, state) =>
              const MaterialPage(child: ResetPasswordPage()),
          r


't do this if the profile of the transformed blocks was statically
  // estimated.  (This could occur despite the function having an entry
  // frequency in completely cold parts of the CFG.)
  //
  // In this case we don't want to suggest to subsequent passes that the
  // calculated weights are fully consistent.  Consider this graph:
  //
  //                 check_1
  //             50% /  |
  //             eq_1   | 50%
  //                 \  |
  //                 check_2
  //             50% /  |
  //             eq_2   | 50%
  //                 \  |
  //                 check_3
  //             50% /  |
  //             eq_3   | 50%
  //                 \  |
  //
  // Assuming the blocks check_* all compare the same value against 1, 2 and 3,
  // the overall probabilities are inconsistent; the total probability that the
  // value is either 1, 2 or 3 is 150%.
  //
  // As a consequence if we thread eq_1 -> check_2 to check_3, check_2->check_3
  // becomes 0%.  This is even worse if the edge whose probability becomes 0% is
  // the loop exit edge.  Then based solely on static estimation we would assume
  // the loop was extremely hot.
  //
  // FIXME this locally as well so that BPI and BFI are consistent as well.  We
  // shouldn't make edges extremely likely or unlikely based solely on static
  // estimation.
  if (BBSuccProbs.size() >= 2 && doesBlockHaveProfileData(BB)) {
    SmallVector<uint32_t, 4> Weights;
    for (auto Prob : BBSuccProbs)
      Weights.push_back(Prob.getNumerator());

    auto TI = BB->getTerminator();
    TI->setMetadata(
        LLVMContext::MD_prof,
        MDBuilder(TI->getParent()->getContext()).createBranchWeights(Weights));
  }
}

/// DuplicateCondBranchOnPHIIntoPred - PredBB contains an unconditional branch
/// to BB which contains an i1 PHI node and a conditional branch on that PHI.
/// If we can duplicate the contents of BB up into PredBB do so now, this
/// improves the odds that the branch will be on an analyzable instruction like
/// a compare.
bool JumpThreadingPass::DuplicateCondBranchOnPHIIntoPred(
    BasicBlock *BB, const SmallVectorImpl<BasicBlock *> &PredBBs) {
  assert(!PredBBs.empty() && "Can't handle an empty set");

  // If BB is a loop header, then duplicating this block outside the loop would
  // cause us to transform this into an irreducible loop, don't do this.
  // See the comments above FindLoopHeaders for justifications and caveats.
  if (LoopHeaders.count(BB)) {
    LLVM_DEBUG(dbgs() << "  Not duplicating loop header '" << BB->getName()
                      << "' into predecessor block '" << PredBBs[0]->getName()
                      << "' - it might create an irreducible loop!\n");
    return false;
  }

  unsigned DuplicationCost =
      getJumpThreadDuplicationCost(BB, BB->getTerminator(), BBDupThreshold);
  if (DuplicationCost > BBDupThreshold) {
    LLVM_DEBUG(dbgs() << "  Not duplicating BB '" << BB->getName()
                      << "' - Cost is too high: " << DuplicationCost << "\n");
    return false;
  }

  // And finally, do it!  Start by factoring the predecessors if needed.
  std::vector<DominatorTree::UpdateType> Updates;
  BasicBlock *PredBB;
  if (PredBBs.size() == 1)
    PredBB = PredBBs[0];
  else {
    LLVM_DEBUG(dbgs() << "  Factoring out " << PredBBs.size()
                      << " common predecessors.\n");
    PredBB = SplitBlockPreds(BB, PredBBs, ".thr_comm");
  }
  Updates.push_b


vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="digest" data-themes="" data-resource-suffix="" data-rustdoc-version="1.75.0 (82e1608df 2023-12-21)" data-channel="1.75.0" data-search-js="search-8fbf244ebcf71464.js" data-settings-js="settings-74424d7eec62a23e.js" ><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"><link rel="icon" href="https://raw.githubusercontent.com/RustCrypto/media/6ee8e381/logo.svg"><button class="sidebar-menu-toggle">☰</button>

digest0.10.7

U654

Aliased type

In digest::consts

<form class="search-form"><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search">
?

</form>

Type Alias digest::<wbr>consts::<wbr>U654<button id="copy-path" title="Copy item path to clipboard"></button>
source · <button id="toggle-all-docs" title="collapse all docs">[−]</button>

pub type U654 = UInt&


ages have obviously been around since the Internet first existed (and thousands of years before that), but there is another type of alternative web page that you’ll see a lot as you trawl the web—feeds (eg RSS feeds). These are very popular, especially for documents that change constantly, such as news sites. I’ll look at these next.

Feeds

A feed is a document containing condensed information detailing the new additions to your site in chronological order. Users can subscribe to it and get to know what has changed on your site recently without having to visit it. They do this by using tools like feed readers, eg Google Reader, Netvibes or Bloglines. Some modern browsers (such as Opera) and e-mail clients (such as Mac Mail, or Outlook on Windows) can also process and display feeds. You can recognize that a web site offers a feed by the RSS icon next to the location as shown in Figure 2:

Figure 2: Opera shows an orange RSS icon next to the location of web sites that offer a feed.

Feed pages are either structured using HTML or an XML format like RSS or Atom, and they are hardly ever generated by hand. Most of the time personal publishing systems will do that work for you and all you need to do to offer the world a feed of your site is link to the XML document with the correct meta element in the head of your document. The following is an excerpt from my blog at http://wait-till-i.com and points to the RSS feed (feedexample.html):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <link rel="alternate" type="application/rss+xml" title="Wait till I come! RSS Feed" href="http://www.wait-till-i.com/feed/">
  <title>Wait till I come!</title>
</head>
<body>
  <p>Example of an RSS feed</p>
</body>
</html>

Supplying a feed makes sense for content-heavy web sites that change very often (like blogs or photo sites), and by using a feed reading tool and subscribing to feeds you can cut down on a lot of your surfing and research time.

If you don’t update your site that often but you have a lot of content and want people to have a visual reminder of your web site, then you might want to consider using a shortcut icon to stand out in people’s bookmark lists. This is what I’ll cover in the section below.

Making bookmarking more fun—using favicons

One last subject I’ll cover here is shortcut icons or favicons. These are small images with a file format of .ico—if you


.isMathematicalInteger());
        }

        double minNoFractional = 0x1l << 52;
        assertEquals(expectedForInteger, new Complex(minNoFractional, imaginary).isMathematicalInteger());
        assertFalse(new Complex(minNoFractional - 0.5, imaginary).isMathematicalInteger());
        assertEquals(expectedForInteger, new Complex(minNoFractional + 0.5, imaginary).isMathematicalInteger());

    }

    /**
     * Test standard values
     */
    @Test
    void testGetArgument() {
        Complex z = new Complex(1, 0);
        assertEquals(0.0, z.getArgument(), 1.0e-12);

        z = new Complex(1, 1);
        assertEquals(FastMath.PI/4, z.getArgument(), 1.0e-12);

        z = new Complex(0, 1);
        assertEquals(FastMath.PI/2, z.getArgument(), 1.0e-12);

        z = new Complex(-1, 1);
        assertEquals(3 * FastMath.PI/4, z.getArgument(), 1.0e-12);

        z = new Complex(-1, 0);
        assertEquals(FastMath.PI, z.getArgument(), 1.0e-12);

        z = new Complex(-1, -1);
        assertEquals(-3 * FastMath.PI/4, z.getArgument(), 1.0e-12);

        z = new Complex(0, -1);
        assertEquals(-FastMath.PI/2, z.getArgument(), 1.0e-12);

        z = new Complex(1, -1);
        assertEquals(-FastMath.PI/4, z.getArgument(), 1.0e-12);

    }

    /**
     * Verify atan2-style handling of infinite parts
     */
    @Test
    void testGetArgumentInf() {
        assertEquals(FastMath.PI/4, infInf.getArgument(), 1.0e-12);
        assertEquals(FastMath.PI/2, oneInf.getArgument(), 1.0e-12);
        assertEquals(0.0, infOne.getArgument(), 1.0e-12);
        assertEquals(FastMath.PI/2, zeroInf.getArgument(), 1.0e-12);
        assertEquals(0.0, infZero.getArgument(), 1.0e-12);
        assertEquals(FastMath.PI, negInfOne.getArgument(), 1.0e-12);
        assertEquals(-3.0*FastMath.PI/4, negInfNegInf.getArgument(), 1.0e-12);
        assertEquals(-FastMath.PI/2, oneNegInf.getArgument(), 1.0e-12);
    }

    /**
     * Verify that either part NaN results in NaN
     */
    @Test
    void testGetArgumentNaN() {
        assertTrue(Double.isNaN(nanZero.getArgument()));
        assertTrue(Double.isNaN(zeroNaN.getArgument()));
        assertTrue(Double.isNaN(Complex.NaN.getArgument()));
    }

    @Test
    void testValueOf() {
        assertEquals(2.0, Complex.valueOf(2.0).getReal(), 1.0e-15);
        assertEquals(0.0, Complex.valueOf(2.0).getImaginary(), 1.0e-15);
        assertTrue(Complex.valueOf(Double.NaN).isNaN());
        assertTrue(Complex.valueOf(Double.POSITIVE_INFINITY).isInfinite());
        assertEquals( 2.0, Complex.valueOf(2.0, -1.0).getReal(), 1.0e-15);
        assertEquals(-1.0, Complex.valueOf(2.0, -1.0).getImaginary(), 1.0e-15);
        assertTrue(Complex.valueOf(Double.NaN, 0.0).isNaN());
        assertTrue(Complex.valueOf(Double.POSITIVE_INFINITY, 0.0).isInfinite());
        assertTrue(Complex.valueOf(Double.NaN, -1.0).isNaN());
        assertTrue(Complex.valueOf(Double.POSITIVE_INFINITY, -1.0).isInfinite());
        assertTrue(Complex.valueOf(0.0, Double.NaN).isNaN());
        assertTrue(Complex.valueOf(0.0, Double.POSITIVE_INFINITY).isInfinite());
        assertTrue(Complex.valueOf(-1.0, Double.NaN).isNaN


组 6129" transform="translate(1495.697 579.537)">\n              <path id="icon-secondLevel_11_路径_4522-2" data-name="路径 4522" d="M9.873,0A9.873,9.873,0,1,1,0,9.873,9.873,9.873,0,0,1,9.873,0Z" transform="translate(0 3.163)" fill="none" stroke="#1cc40a" stroke-linecap="round" stroke-width="1.5" />\n              <path id="icon-secondLevel_11_路径_4530-2" data-name="路径 4530" d="M.656-.712H6.739" transform="translate(5.946 0.712)" fill="none" stroke="#1cc40a" stroke-linecap="round" stroke-width="1.5" />\n              <path id="icon-secondLevel_11_路径_4531-2" data-name="路径 4531" d="M.656-.712h1.28" transform="translate(8.347 2.016)" fill="none" stroke="#1cc40a" stroke-linecap="round" stroke-width="1.5" />\n              <line id="icon-secondLevel_11_直线_339-2" data-name="直线 339" x1="3.911" y1="4.468" transform="translate(18.348 2.979)" fill="none" stroke="#1cc40a" stroke-linecap="round" stroke-width="1.5" />\n            </g>\n          </g>\n        </g>\n      </g>\n    </g>\n  </g>\n</symbol>'});a.a.add(s);e.default=s},uGok:function(t,e,n){"use strict";n.r(e);var r=n("4BeY"),i=n.n(r),o=n("IaFt"),a=n.n(o),s=new i.a({id:"icon-secondLevel_23",use:"icon-secondLevel_23-usage",viewBox:"0 0 25 25",content:'<symbol xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 25 25" id="icon-secondLevel_23">\n  <defs>\n    <clipPath id="icon-secondLevel_23_clip-path">\n      <path id="icon-secondLevel_23_路径_4551" data-name="路径 4551" d="M9156.323,7195.25l-.448-20,17.261,3-6.687,31.438-25.75-6.562,7.063-23.312Z" fill="#fff" />\n    </clipPath>\n    <clipPath id="icon-secondLevel_23_clip-画板_4">\n      <rect width="25" height="25" />\n    </clipPath>\n  </defs>\n  <g id="icon-secondLevel_23_画板_4" data-name="画板 – 4" clip-path="url(#icon-secondLevel_23_clip-画板_4)">\n    <g id="icon-secondLevel_23__23" data-name="23" transform="translate(-8866.948 -7179.5)">\n      <g id="icon-secondLevel_23_组_7709" data-name="组 7709" transform="translate(7372.751 6601.063)">\n        <g id="icon-secondLevel_23_组_6129" data-name="组 6129" transform="translate(1495.697 579.537)">\n          <path id="icon-secondLevel_23_路径_4522" data-name="路径 4522" d="M9.873,0A9.873,9.873,0,1,1,0,9.873,9.873,9.873,0,0,1,9.873,0Z" transform="translate(0 3.163)" fill="none" stroke="#ccc" stroke-linecap="round" stroke-width="1.5"


> cookies = await _cookieManager.getCookies(url: _uri);

//     final List<Cookie> resCookies = [];
//     for (final c in cookies) {
//       resCookies.add(c);
//     }
//     GetIt.I<AppParameters>().cookies = resCookies;
//   }

//   Future _deleteCookies() async {
//     await _cookieManager.deleteAllCookies();
//   }

//   @override
//   Widget build(BuildContext context) {
//     return InAppWebView(
//       initialUrlRequest: URLRequest(
//         url: _uri,
//         headers: {
//           'Accept': 'application/json',
//           'User-Agent': 'AgoraDesk',
//         },
//       ),
//       initialSettings: kWebviewSettings,
//       onWebViewCreated: (controller) async {
//         _webController = controller;
//         await _webController?.loadUrl(urlRequest: URLRequest(url: _uri));
//       },
//       onLoadStop: (controller, _) async {
//         final heightLoaded = await controller.getContentHeight();
//         if (heightLoaded != null && heightLoaded > 200) {
//           widget.onHeightChanged(heightLoaded.toDouble());
//         }
//       },
//       shouldOverrideUrlLoading: (controller, navigationAction) async {
//         return NavigationActionPolicy.ALLOW;
//       },

//     );
//   }

//   @override
//   void dispose() {
//     _timer?.cancel();
//     _timer2?.cancel();
//     super.dispose();
//   }
// }
import 'package:agoradesk/core/app_parameters.dart';
import 'package:agoradesk/core/utils/string_mixin.dart';
import 'package:agoradesk/features/ads/data/models/asset.dart';
import 'package:agoradesk/features/wallet/data/models/transaction_model.dart';
import 'package:get_it/get_it.dart';
import 'package:vm/vm.dart';

class TransactionViewModel extends ViewModel with StringMixin {
  TransactionViewModel({
    required this.transaction,
  });

  final TransactionModel transaction;
  late final bool hasTrade;
  late final String linkForChain;

  @override
  void init() {
    setHasTrade();
    setLinkForTheChain();
    super.init();
  }

  void setHasTrade() {
    final String res = transaction.getIdFromDescription;
    if (res.isNotEmpty) {
      hasTrade = true;
    } else {
      hasTrade = false;
    }
  }

  void setLinkForTheChain() {
    if (transaction.txId != null && transaction.txId!.isNotEmpty) {
      if (transaction.asset!.isBitcoin()) {
        linkForChain = GetIt.I<AppParameters>().btcChainUrl + (transaction.txId!);
      } else {
        linkForChain = GetIt.I<AppParameters>().xmrChainUrl + (transaction.txId!);
      }
    } else {
      linkForChain = '';
    }
  }

  // void updateWith({
  //   // Asset? asset,
  // }) {
  //   // _asset = asset;
  //   notifyListeners();
  // }
  //
  // @override
  // void dispose() {
  //   super.dispose();
  // }
}
import 'dart:io';

import 'package:agoradesk/core/api/api_helper.dart';
import 'package:agoradesk/core/events.dart';
import 'package:agoradesk/core/functional_models/either.dart';
import 'package:agoradesk/core/theme/theme.dart';
import 'package:agoradesk/core/utils/error_parse_mixin.dart';
import 'package:agoradesk/features/ads/data/models/asset.dart';
import 'package:agoradesk/features/wallet/data/models/transaction_model.dart';
import 'package:ago


ConfigHandler<T> {
    (newConfig: T);
  }

  /**
   * Enables a human-friendly configuration file in the config/ directory.
   *
   * @param name The name of the config to use
   * @param defaultConfig The configuration to be used if one doesn't exist
   */
  export default function useConfig<T = any>(
    name: string,
    defaultConfig: T
  ): [T, SetConfigHandler<T>];
}
let safariHax = false;
if (!AudioBuffer.prototype.copyToChannel) safariHax = true;

let firefoxHax = false;
try {
    new AudioContext({ sampleRate: 262144 });
} catch {
    if (!safariHax)
        firefoxHax = true;
}

export const NORMAL_SAMPLE_RATE = 262144;
export const SAMPLE_RATE = firefoxHax ? 131072 : (safariHax ? 65536 : NORMAL_SAMPLE_RATE);
export const LATENCY = firefoxHax ? 4096 : (safariHax ? 2048 : 8192);
export const LATENCY_SEC = LATENCY / SAMPLE_RATE;

export class SoundPlayer {

    constructor() {
        const AudioContext = window.AudioContext   // Normal browsers
            || (window as any).webkitAudioContext; // Sigh... Safari

        this.ctx = new AudioContext({ sampleRate: SAMPLE_RATE });

        const fixAudioContext = () => {
            // Create empty buffer
            let buffer = this.ctx.createBuffer(1, 1, 22050);
            let source = this.ctx.createBufferSource();
            source.buffer = buffer;
            // Connect to output (speakers)
            source.connect(this.ctx.destination);
            // Play sound
            if (source.start) {
                source.start(0);
            } else if ((source as any).play) {
                (source as any).play(0);
            } else if ((source as any).noteOn) {
                (source as any).noteOn(0);
            }
        };
        // iOS 6-8
        document.addEventListener('touchstart', fixAudioContext);
        // iOS 9
        document.addEventListener('touchend', fixAudioContext);

        this.gain = this.ctx.createGain();
        this.gain.connect(this.ctx.destination);
    }

    gain: GainNode;

    ctx: AudioContext;
    sources: AudioBufferSourceNode[] = [];

    sampleRate = SAMPLE_RATE;

    queueAudio(bufferLeft: Float32Array, bufferRight: Float32Array, sampleRate: number) {
        const length = Math.max(bufferLeft.length, bufferRight.length);
        let buffer = this.ctx.createBuffer(2, length, sampleRate);

        if (!safariHax) {
            buffer.copyToChannel(bufferLeft, 0);
            buffer.copyToChannel(bufferRight, 1);
        } else {
            buffer.getChannelData(0).set(bufferLeft);
            buffer.getChannelData(1).set(bufferRight);
        }

        let bufferSource = this.ctx.createBufferSource();

        bufferSource.onended = () => { this.sources.shift(); };

        bufferSource.buffer = buffer;
        bufferSource.connect(this.gain);
        bufferSource.start(this.audioSec);

        if (this.audioSec <= this.ctx.currentTime + 0.02) {
            // Reset time if close to buffer underrun
            this.audioSec = this.ctx.currentTime + 0.06;
        }

        this.sampleRate = sampleRate;
        this.audioSec += LATENCY / sampleRate / 2;

        this.sources.push(bufferSource);
    }

    audioSec = 0;

    reset() {


n(setN, (_, n) => n)
      const combined = combine({n: $n})
      const combfn = combine($n, n => n)
      storeWatch('$n', $n, fn)
      storeWatch('combined', combined, fn)
      storeWatch('combfn', combfn, fn)
      unitWatch('setN', setN, fn)
      fn(`## first hydration, $n = 1`)
      hydrate(app, {
        values: [[$n, 1]],
      })
      fn(`## second hydration, $n = -1`)
      hydrate(app, {
        values: [[$n, -1]],
      })
      fn(`## setN(2)`)
      setN(2)
      expect(argumentHistory(fn)).toMatchInlineSnapshot(`
        Array [
          "$n: 0",
          "combined: {n:0}",
          "combfn: 0",
          "## first hydration, $n = 1",
          "$n: 1",
          "$n.updates: 1",
          "combined: {n:1}",
          "combined.updates: {n:1}",
          "combfn: 1",
          "combfn.updates: 1",
          "## second hydration, $n = -1",
          "$n: -1",
          "$n.updates: -1",
          "combined: {n:-1}",
          "combined.updates: {n:-1}",
          "combfn: -1",
          "combfn.updates: -1",
          "## setN(2)",
          "setN: 2",
          "$n: 2",
          "$n.updates: 2",
          "combined: {n:2}",
          "combined.updates: {n:2}",
          "combfn: 2",
          "combfn.updates: 2",
        ]
      `)
    })
    test('scope', async () => {
      const fn = jest.fn()
      const app = createDomain()
      const setN = app.createEvent<number>()
      const $n = app.createStore(0).on(setN, (_, n) => n)
      const combined = combine({n: $n})
      const combfn = combine($n, n => n)
      storeWatch('$n', $n, fn)
      storeWatch('combined', combined, fn)
      storeWatch('combfn', combfn, fn)
      unitWatch('setN', setN, fn)
      fn(`## forking, $n = -2`)
      const scope = fork(app, {
        values: [[$n, -2]],
      })
      fn(`## first hydration, $n = 1`)
      hydrate(scope, {
        values: [[$n, 1]],
      })
      fn(`## second hydration, $n = -1`)
      hydrate(scope, {
        values: [[$n, -1]],
      })
      fn(`## setN(2)`)
      await allSettled(setN, {
        params: 2,
        scope,
      })
      expect(argumentHistory(fn)).toMatchInlineSnapshot(`
        Array [
          "$n: 0",
          "combined: {n:0}",
          "combfn: 0",
          "## forking, $n = -2",
          "## first hydration, $n = 1",
          "$n: 1",
          "$n.updates: 1",
          "combined: {n:1}",
          "combined.updates: {n:1}",
          "combfn: 1",
          "combfn.updates: 1",
          "## second hydration, $n = -1",
          "$n: -1",
          "$n.updates: -1",
          "combined: {n:-1}",
          "combined.updates: {n:-1}",
          "combfn: -1",
          "combfn.updates: -1",
          "## setN(2)",
          "setN: 2",
          "$n: 2",
          "$n.updates:


import pytest

from sqlframe import activate
from sqlframe.bigquery import (
    BigQueryCatalog,
    BigQueryDataFrame,
    BigQueryDataFrameNaFunctions,
    BigQueryDataFrameReader,
    BigQueryDataFrameStatFunctions,
    BigQueryDataFrameWriter,
    BigQueryGroupedData,
    BigQuerySession,
    BigQueryUDFRegistration,
)
from sqlframe.bigquery import Column as BigQueryColumn
from sqlframe.bigquery import Row as BigQueryRow
from sqlframe.bigquery import Window as BigQueryWindow
from sqlframe.bigquery import WindowSpec as BigQueryWindowSpec
from sqlframe.bigquery import functions as BigQueryF
from sqlframe.bigquery import types as BigQueryTypes

@pytest.mark.forked
def test_activate_bigquery(check_pyspark_imports):
    check_pyspark_imports(
        "bigquery",
        sqlf_session=BigQuerySession,
        sqlf_catalog=BigQueryCatalog,
        sqlf_column=BigQueryColumn,
        sqlf_dataframe=BigQueryDataFrame,
        sqlf_grouped_data=BigQueryGroupedData,
        sqlf_window=BigQueryWindow,
        sqlf_window_spec=BigQueryWindowSpec,
        sqlf_functions=BigQueryF,
        sqlf_types=BigQueryTypes,
        sqlf_udf_registration=BigQueryUDFRegistration,
        sqlf_dataframe_reader=BigQueryDataFrameReader,
        sqlf_dataframe_writer=BigQueryDataFrameWriter,
        sqlf_dataframe_na_functions=BigQueryDataFrameNaFunctions,
        sqlf_dataframe_stat_functions=BigQueryDataFrameStatFunctions,
        sqlf_row=BigQueryRow,
    )

@pytest.mark.forked
def test_activate_bigquery_default_dataset():
    activate("bigquery", config={"default_dataset": "sqlframe.sqlframe_test"})
    from pyspark.sql import SparkSession

    assert SparkSession == BigQuerySession
    spark = SparkSession.builder.appName("test").getOrCreate()
    assert spark.default_dataset == "sqlframe.sqlframe_test"


                 type: 'input',
                        name: 'email',
                        message: 'Author Email',
                        default: email,
                    },
                },
                {
                    value: prompt,
                    thisArg: this,
                    args: {
                        type: 'input',
                        name: 'description',
                        message: 'Module Description',
                        default: 'Some description',
                    },
                },
                {
                    value: prompt,
                    thisArg: this,
                    args: {
                        type: 'input',
                        name: 'indexFile',
                        message: 'Index File path',
                        default: 'index.js',
                    },
                },
            ],
        });
    }
    async prompting(): Promise<void> {
        const promptAnswers = await this.__askFor<Package>();
        const mappedAnswers = {
            name: this.options.name,
            version: get(promptAnswers, 'version'),
            author: {
                email: get(promptAnswers, 'email'),
                name: get(promptAnswers, 'name'),
            },
            license: get(promptAnswers, 'license'),
            keywords: [],
            main: get(promptAnswers, 'indexFile'),
            description: get(promptAnswers, 'description'),
        };
        this.answers = appendToObj(this.answers, mappedAnswers);
    }

    writing(): void {
        let pkg = this._readPkg();
        pkg = appendToObj(pkg, this.answers);
        this._writePkg(pkg);
    }
};
import * as socketIo from 'socket.io';
import { Cnvs } from '../../common/inteface/CnvsMap';

export class IndexSocket {
  protected io: socketIo.Server;
  protected MAP: Cnvs.Map;
  protected MAX_COL = 10;
  protected MAX_ROW = 7;

  constructor(io: any) {
    this.io = io;
    this.generateMap();
    this.main();
  }

  protected main() {
    this.io.on('connect', (socket: any) => {
      console.log('Конектед клиент');

      socket.emit('setMap', this.MAP);

      socket.on('setPosition', (data: any) => { // установка значения в ячеку
        console.log('setPosition', data);
        this.io.emit('changeMap', [this.setValCell(data)]); // Отослать всем зименение на карте (не всю карту)
      });

      socket.on('disconnect', () => {
        console.log('Дисконектед клиент');
      });

    });
  }

  // Установка значения в ячеку карты
  protected setValCell(data: Cnvs.Cell) {
    const statusNow = this.MAP[data.rowIndex][data.colIndex].solid;

    this.MAP[data.rowIndex][data.colIndex] = {
      rowIndex: data.rowIndex,
      colIndex: data.colIndex,
      solid: !statusNow,
    };

    return this.MAP[data.rowIndex][data.colIndex];
  }

  protected generateMap() {
    this.MAP = [];

    for (let row = 0; row < this.MAX_ROW; row++) {
      this.MAP[row] = [];
      for (let col = 0; col < this.MAX_COL; col++) {
        this.MAP[row][col] = {
          rowIndex: row,
          colIndex: col,
          solid: false,
        };
      }
    }
  }
}

class CnvMap {
  cellList: CnvCell[];
  maxRow: number;
  maxCol: number;

  constructor() {
    this.maxRow = 10;
    this.maxCol = 7;
  }

  static validCell(CnvCell: CnvCell) {
    // if (CnvCell.rowIndex > this.maxRow && CnvCell.colIndex > this.maxCol) {
    //     return false;
    // }
    return true;
  }

  addCell() {
    this.cellList.push(new CnvCell());
  }

  setDataToCell() {

  }
}

class CnvCell implements Cnvs.Cell {
  rowIndex: number;
  colIndex: number;
  solid: boolean;


                let lib: std::path::PathBuf = std::env::var("CARGO_STATICLIB_FILE_BAR_bar").expect("CARGO_STATICLIB_FILE_BAR_bar").into();
                println!("{}", lib.display());
                assert!(&lib.is_file());

                let lib: std::path::PathBuf = std::env::var("CARGO_CDYLIB_FILE_BAR_bar").expect("CARGO_CDYLIB_FILE_BAR_bar").into();
                println!("{}", lib.display());
                assert!(&lib.is_file());

                let dir: std::path::PathBuf = std::env::var("CARGO_BIN_DIR_BAR").expect("CARGO_BIN_DIR_BAR").into();
                println!("{}", dir.display());
                assert!(dir.is_dir());

                let bar: std::path::PathBuf = std::env::var("CARGO_BIN_FILE_BAR").expect("CARGO_BIN_FILE_BAR").into();
                println!("{}", bar.display());
                assert!(&bar.is_file());

                let bar2: std::path::PathBuf = std::env::var("CARGO_BIN_FILE_BAR_bar").expect("CARGO_BIN_FILE_BAR_bar").into();
                println!("{}", bar2.display());
                assert_eq!(bar, bar2);
            }
        "#)
        .file(
            "bar/Cargo.toml",
            r#"
                [package]
                name = "bar"
                version = "0.5.0"
                authors = []

                [lib]
                crate-type = ["staticlib", "cdylib"]
            "#,
        )
        // compilation target is native for build scripts unless overridden
        .file("bar/src/bin/bar.rs", &format!(r#"fn main() {{ assert_eq!(std::env::var("TARGET").unwrap(), "{}"); }}"#, cross_compile::native()))
        .file("bar/src/bin/baz.rs", "fn main() {}")
        .file("bar/src/lib.rs", "")
        .build();
    p.cargo("build -Z bindeps")
        .masquerade_as_nightly_cargo()
        .with_stderr_contains("[COMPILING] foo [..]")
        .with_stderr_contains("[COMPILING] bar v0.5.0 ([CWD]/bar)")
        .with_stderr_contains("[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]")
        .run();

    let build_script_output = build_script_output_string(&p, "foo");
    let msg = "we need the binary directory for this artifact along with all binary paths";
    if cfg!(target_env = "msvc") {
        match_exact(
            "[..]/artifact/bar-[..]/bin/baz.exe\n\
             [..]/artifact/bar-[..]/staticlib/bar-[..].lib\n\
             [..]/artifact/bar-[..]/cdylib/bar.dll\n\
             [..]/artifact/bar-[..]/bin\n\
             [..]/artifact/bar-[..]/bin/bar.exe\n\
             [..]/artifact/bar-[..]/bin/bar.exe",
            &build_script_output,
            msg,
            "",
            None,
        )
        .unwrap();
    } else {
        match_exact(
            "[..]/artifact/bar-[..]/bin/baz-[..]\n\
             [..]/artifact/bar-[..]/staticlib/libbar-[..].a\n\
             [..]/artifact/bar-[..]/cdylib/[..]bar.[..]\n\
             [..]/artifact/bar-[..]/bin\n\
             [..]/artifact/bar-[..]/bin/bar-[..]\n\
             [..]/artifact/bar-[..]/bin/bar-[..]",
            &build_script_output,
            msg,
            "",
            None,
        )
        .unwrap();


채화","dalleStyle.wideAngle":"와이드 앵글","dalleStyle.wideAngleExpanded":"광각 렌즈","dalleStyle.woodcut":"목판화","dchvRM":"저장","deactivatedWorkspaceModal.manageSubscriptionButton":"구독 관리","deactivatedWorkspaceModal.purchaseNewSubscription":"새 구독을 구매하여 워크스페이스를 다시 활성화할 수 있습니다.","deactivatedWorkspaceModal.purchaseNewSubscriptionButton":"구독 구매","deactivatedWorkspaceModal.resolveOutstandingInvoice":"구독에 대한 미결제 청구서를 해결함으로써 작업 공간을 다시 활성화할 수 있습니다.","deactivatedWorkspaceModal.unableToOpenStripeDashboard":"Stripe 대시보드를 열 수 없습니다","f0WG0Q":"ChatGPT 외부에서 정보를 검색하거나 조치를 취할 수 있게 GPT를 활용하세요.","gizmo.contactsExplanation":"이 GPT가 대화할 수 있는 다른 GPT들입니다.","gizmo.gptScriptExplanation":"GPT 상태를 저장하기 위한 코드와 의도","gizmoRolodex.emptyLabel":"GPT","hKfo5R":"사용 가능한 작업","hSd+5k":"API 키","hedgehog.banner_signup_button":"가입하기","hedgehog.banner_terms_disclaimer":"메시지를 보내면 당사의 <terms>이용 약관</terms>에 동의하는 것입니다. 당사의 <privacy>개인정보 처리방침</privacy>을 읽어보세요. 민감한 정보를 공유하지 마세요. 채팅 내용은 검토되어 모델 훈련에 사용될 수 있습니다. <help>선택사항에 대해 알아보기</help>.","helpMenu.items.settings":"설정","imageEditor.transformationTextareaPlaceholder":"이미지 편집 중...","jitPluginMessage.confirmParamsTitleV3":"{gizmoName}(이)가 이 정보를 {domain}과(와) 공유하고자 합니다","jitPluginMessage.confirmingV4":"<title>{gizmoName}(이)가 {domain}과(와) 대화하고 싶어합니다</title><subtitle>신뢰할 수 있는 사이트만 허용하세요</subtitle>","jitPluginMessage.finishedV4":"{domain}와(과) 대화를 마쳤습니다","jitPluginMessage.paramsModalFiles":"파일","jitPluginMessage.paramsModalImages":"이미지","jitPluginMessage.paramsModalTitle":"작업 검토","kTR+Ef":"URL에서 가져오기","lS4nvz":"클라이언트 ID","navigation.signUpButtonText":"가입하기","personalizationSettings.rolodexLabel":"롤로덱스","qG7Z4O":"이 GPT 작업에 OAuth 사용","rN0uCi":"API 키","settingsModal.alwaysShowDataAnalystOutput":"


Header();
	case(State::ReadBody) :
		return ParseBody();
	default:
		return state;
	}
}

LinkLayerParser::State LinkLayerParser::ParseSync()
{
	if (this->buffer.NumBytesRead() >= 10)// && buffer.Sync())
	{
		uint32_t skipCount = 0;
		const auto synced = buffer.Sync(skipCount);
		if (skipCount > 0)
		{
			FORMAT_LOG_BLOCK(logger, flags::WARN, "Skipped %u bytes seaching for start bytes", skipCount);
		}

		return synced ? State::ReadHeader : State::FindSync;
	}
	else
	{
		return State::FindSync;
	}
}

LinkLayerParser::State LinkLayerParser::ParseHeader()
{
	if (this->buffer.NumBytesRead() >= 10)
	{
		if (this->ReadHeader())
		{
			return State::ReadBody;
		}
		else
		{
			this->FailFrame();
			return State::FindSync;
		}
	}
	else
	{
		return State::ReadHeader;
	}
}

LinkLayerParser::State LinkLayerParser::ParseBody()
{
	if (buffer.NumBytesRead() < this->frameSize)
	{
		return State::ReadBody;
	}
	else
	{
		if(this->ValidateBody())
		{
			this->TransferUserData();
			return State::Complete;
		}
		else
		{
			this->FailFrame();
			return State::FindSync;
		}
	}
}

void LinkLayerParser::PushFrame(IFrameSink& sink)
{
	LinkHeaderFields fields(
	    header.GetFuncEnum(),
	    header.IsFromMaster(),
	    header.IsFcbSet(),
	    header.IsFcvDfcSet(),
	    header.GetDest(),
	    header.GetSrc()
	);

	sink.OnFrame(fields, userData);

	buffer.AdvanceRead(frameSize);
}

void LinkLayerParser::TransferUserData()
{
	uint32_t len = header.GetLength() - LPDU_MIN_LENGTH;
	LinkFrame::ReadUserData(buffer.ReadBuffer() + LPDU_HEADER_SIZE, rxBuffer, len);
	userData = RSlice(rxBuffer, len);
}

bool LinkLayerParser::ReadHeader()
{
	header.Read(buffer.ReadBuffer());
	if (CRC::IsCorrectCRC(buffer.ReadBuffer(), LI_CRC))
	{
		if (ValidateHeaderParameters())
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		++statistics.numHeaderCrcError;
		SIMPLE_LOG_BLOCK(logger, flags::WARN, "CRC failure in header");
		return false;
	}
}

bool LinkLayerParser::ValidateBody()
{
	uint32_t len = header.GetLength() - LPDU_MIN_LENGTH;
	if (LinkFrame::ValidateBodyCRC(buffer.ReadBuffer() + LPDU_HEADER_SIZE, len))
	{
		FORMAT_LOG_BLOCK(logger, flags::LINK_RX,
		                 "Function: %s Dest: %u Source: %u Length: %u",
		                 LinkFunctionToString(header.GetFuncEnum()),
		                 header.GetDest(),
		                 header.GetSrc(),
		                 header.GetLength());

		FORMAT_HEX_BLOCK(logger, flags::LINK_RX_HEX, buffer.ReadBuffer().Take(frameSize), 10, 18);

		return true;
	}
	else
	{
		++this->statistics.numBodyCrcError;
		SIMPLE_LOG_BLOCK(logger, flags::ERR, "CRC failure in body");
		return false;
	}
}

bool LinkLayerParser::ValidateHeaderParameters()
{
	if(!header.ValidLength())
	{
		++statistics.numBadLength;
		FORMAT_LOG_BLOCK(logger, flags::ERR, "LENGTH out of range [5,255]: %i", header.GetLength());
		return false;
	}

	//Now make sure that the function code is known and that the FCV is appropriate
	if (!this->ValidateFunctionCode())
	{
		return false;
	}

	uint8_t user_data_length = header.GetLength() - L


					{
							Count: 3,
							Values: []string{
								"x2",
							},
						},
					},
				},
			}},
		},
		"slice required topology level cannot be above the main required topology level": {
			nodes:  defaultNodes,
			levels: defaultThreeLevels,
			podSets: []PodSetTestCase{{
				topologyRequest: &kueue.PodSetTopologyRequest{
					Required:                    ptr.To(corev1.LabelHostname),
					PodSetSliceRequiredTopology: ptr.To(tasBlockLabel),
					PodSetSliceSize:             ptr.To(int32(1)),
				},
				requests: resources.Requests{
					corev1.ResourceCPU: 1000,
				},
				count:      1,
				wantReason: "podset slice topology cloud.com/topology-block is above the podset topology kubernetes.io/hostname",
			}},
		},
		"slice size is required when slice topology is requested": {
			nodes:  defaultNodes,
			levels: defaultThreeLevels,
			podSets: []PodSetTestCase{{
				topologyRequest: &kueue.PodSetTopologyRequest{
					Required:                    ptr.To(tasBlockLabel),
					PodSetSliceRequiredTopology: ptr.To(corev1.LabelHostname),
				},
				requests: resources.Requests{
					corev1.ResourceCPU: 1000,
				},
				count:      1,
				wantReason: "slice topology requested, but slice size not provided",
			}},
		},
		"cannot request not existing slice topology": {
			nodes:  defaultNodes,
			levels: defaultThreeLevels,
			podSets: []PodSetTestCase{{
				topologyRequest: &kueue.PodSetTopologyRequest{
					Required:                    ptr.To(string(tasBlockLabel)),
					PodSetSliceRequiredTopology: ptr.To("not-existing-topology-level"),
					PodSetSliceSize:             ptr.To(int32(1)),
				},
				requests: resources.Requests{
					corev1.ResourceCPU: 1000,
				},
				count:      1,
				wantReason: "no requested topology level for slices: not-existing-topology-level",
			}},
		},
		"no topology for podset; host required for slices; BestFit": {
			//        b1
			//         |
			//        r1
			//    /    |    \
			// x3:3, x5:3, x1:3
			//
			nodes: []corev1.Node{
				*testingnode.MakeNode("b1-r1-x3").
					Label(tasBlockLabel, "b1").
					Label(tasRackLabel, "r1").
					Label(corev1.LabelHostname, "x3").
					StatusAllocatable(corev1.ResourceList{
						corev1.ResourceCPU:  resource.MustParse("3"),
						corev1.ResourcePods: resource.MustParse("10"),
					}).
					Ready().
					Obj(),
				*testingnode.MakeNode("b1-r1-x5").
					Label(tasBlockLabel, "b1").
					Label(tasRackLabel, "r1").
					Label(corev1.LabelHostname, "x5").
					StatusAllocatable(corev1.ResourceList{
						corev1.ResourceCPU:  resource.MustParse("3"),
						corev1.ResourcePods: resource.MustParse("10"),
					}).
					Ready().
					Obj(),
				*testingnode.MakeNode("b1-r1-x1").
					Label(tasBlockLabel, "b1").
					Label(tasRackLabel, "r1").
					Label(corev1.LabelHostname, "x1").
					StatusAllocatable(corev1.ResourceList{
						corev1.ResourceCPU:  resource.MustParse("3"),
						corev1.ResourcePods: resource.MustParse


"
	CheckStatusRunning        CheckStatus = "running"
	CheckStatusSuccess        CheckStatus = "success"
	CheckStatusFailure        CheckStatus = "failure"
	CheckStatusError          CheckStatus = "error"
	CheckStatusFailureIgnored CheckStatus = "failure_ignored"
)

var checkStatuses = sortEnum([]CheckStatus{
	CheckStatusPending,
	CheckStatusRunning,
	CheckStatusSuccess,
	CheckStatusFailure,
	CheckStatusError,
	CheckStatusFailureIgnored,
})

var terminalCheckStatuses = []CheckStatus{CheckStatusFailure, CheckStatusSuccess, CheckStatusError,
	CheckStatusFailureIgnored}

var successCheckStatuses = []CheckStatus{CheckStatusSuccess, CheckStatusFailureIgnored}

// CheckPayloadKind defines status payload type.
type CheckPayloadKind string

func (CheckPayloadKind) Enum() []interface{} { return toInterfaceSlice(checkPayloadTypes) }
func (s CheckPayloadKind) Sanitize() (CheckPayloadKind, bool) {
	return Sanitize(s, GetAllCheckPayloadTypes)
}
func GetAllCheckPayloadTypes() ([]CheckPayloadKind, CheckPayloadKind) {
	return checkPayloadTypes, CheckPayloadKindEmpty
}

// CheckPayloadKind enumeration.
const (
	CheckPayloadKindEmpty    CheckPayloadKind = ""
	CheckPayloadKindRaw      CheckPayloadKind = "raw"
	CheckPayloadKindMarkdown CheckPayloadKind = "markdown"
	CheckPayloadKindPipeline CheckPayloadKind = "pipeline"
)

var checkPayloadTypes = sortEnum([]CheckPayloadKind{
	CheckPayloadKindEmpty,
	CheckPayloadKindRaw,
	CheckPayloadKindMarkdown,
	CheckPayloadKindPipeline,
})

func (s CheckStatus) IsCompleted() bool {
	return slices.Contains(terminalCheckStatuses, s)
}

func (s CheckStatus) IsSuccess() bool {
	return slices.Contains(successCheckStatuses, s)
}
// Copyright 2023 Harness, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package enum

import (
	"encoding/json"
	"fmt"
)

type InfraProviderType string

func (p InfraProviderType) Enum() []interface{} {
	return toInterfaceSlice(providerTypes)
}

var providerTypes = []InfraProviderType{
	InfraProviderTypeDocker,
	InfraProviderTypeHarnessGCP,
	InfraProviderTypeHarnessCloud,
	InfraProviderTypeHybridVMGCP,
	InfraProviderTypeHybridVMAWS,
}

func AllInfraProviderTypes() []InfraProviderType {
	return providerTypes
}

const (
	InfraProviderTypeDocker       InfraProviderType = "docker"
	InfraProviderTypeHarnessGCP   InfraProviderType = "harness_gcp"
	InfraProviderTypeHarnessCloud InfraProviderType = "harness_cloud"
	InfraProviderTypeHybridVMGCP  InfraProviderType = "hybrid_vm_gcp"
	InfraProviderTypeHybridVMAWS  InfraProviderType = "hybrid_vm_aws"
)

func (p *InfraProviderType) UnmarshalJSON(data []byte) error {
	var s string
	if err := json.Unmarshal(data, &s); err != nil {
		return err
	}
	if s == "" {
		*p = ""
		return nil
	}
	for _, v := range providerTypes {
		if InfraProviderType(s) == v {
			*p = v
			return nil
		}
	}
	return fmt.Errorf("invalid InfraProviderType: %s", s)
}
// Copyright 2023 Harness, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licen


/* **********************************************************
 * Copyright (c) 2018 Google, Inc.  All rights reserved.
 * **********************************************************/

/*
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * * Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 *
 * * Redistributions in binary form must reproduce the above copyright notice,
 *   this list of conditions and the following disclaimer in the documentation
 *   and/or other materials provided with the distribution.
 *
 * * Neither the name of Google, Inc. nor the names of its contributors may be
 *   used to endorse or promote products derived from this software without
 *   specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 */

/* reuse-distance tool creation */

#ifndef _REUSE_DISTANCE_CREATE_H_
#define _REUSE_DISTANCE_CREATE_H_ 1

#include "analysis_tool.h"

namespace dynamorio {
namespace drmemtrace {

/**
 * @file drmemtrace/reuse_distance_create.h
 * @brief DrMemtrace reuse distance tool creation.
 */

/**
 * The options for reuse_distance_tool_create().
 * The options are currently documented in \ref sec_drcachesim_ops.
 */
// These options are currently documented in ../common/options.cpp.
struct reuse_distance_knobs_t {
    reuse_distance_knobs_t()
        : line_size(64)
        , report_histogram(false)
        , distance_threshold(100)
        , report_top(10)
        , skip_list_distance(500)
        , distance_limit(0)
        , verify_skip(false)
        , verbose(0)
        , histogram_bin_multiplier(1.00)
    {
    }
    unsigned int line_size;
    bool report_histogram;
    unsigned int distance_threshold;
    unsigned int report_top;
    unsigned int skip_list_distance;
    unsigned int distance_limit;
    bool verify_skip;
    unsigned int verbose;
    double histogram_bin_multiplier;
};

/** Creates an analysis tool which computes reuse distance. */
analysis_tool_t *
reuse_distance_tool_create(const reuse_distance_knobs_t &knobs);

} // namespace drmemtrace
} // namespace dynamorio

#endif /* _REUSE_DISTANCE_CREATE_H_ */


f/fd/%d", fino);
      if (readlink (fbuf, nambuf2, sizeof (nambuf2) - 1) > 0)
        return nambuf2;
      snprintf (nambuf2, sizeof (nambuf2) - 1, "[fd#%d]", fino);
    }
  else
    snprintf (nambuf2, sizeof (nambuf2) - 1, "[FILE@%p]", f);
  return nambuf2;
}                               /// end static2_file_name

void
show_backtrace_stderr (void)
{
  void *backbuf[MAX_RECURSIVE_DEPTH + 2];
  memset (backbuf, 0, sizeof (backbuf));
  fflush (NULL);
  int nb = backtrace (backbuf, MAX_RECURSIVE_DEPTH);
  if (nb < 0)
    nb = 0;
  else if (nb > MAX_RECURSIVE_DEPTH)
    nb = MAX_RECURSIVE_DEPTH;
  backtrace_symbols_fd (backbuf, nb, STDERR_FILENO);
}                               /* end show_backtrace_stderr */

/************
 ** for Emacs:
 ** Local Variables: ;;
 ** compile-command: "./build.sh" ;;
 ** End: ;;
 ************/


 OnConflictColumns calls `OnConflict` and configures the columns
// as conflict target. Using this option is equivalent to using:
//
//	client.NotificationEventDeliveryStatus.Create().
//		OnConflict(sql.ConflictColumns(columns...)).
//		Exec(ctx)
func (_c *NotificationEventDeliveryStatusCreateBulk) OnConflictColumns(columns ...string) *NotificationEventDeliveryStatusUpsertBulk {
	_c.conflict = append(_c.conflict, sql.ConflictColumns(columns...))
	return &NotificationEventDeliveryStatusUpsertBulk{
		create: _c,
	}
}

// NotificationEventDeliveryStatusUpsertBulk is the builder for "upsert"-ing
// a bulk of NotificationEventDeliveryStatus nodes.
type NotificationEventDeliveryStatusUpsertBulk struct {
	create *NotificationEventDeliveryStatusCreateBulk
}

// UpdateNewValues updates the mutable fields using the new values that
// were set on create. Using this option is equivalent to using:
//
//	client.NotificationEventDeliveryStatus.Create().
//		OnConflict(
//			sql.ResolveWithNewValues(),
//			sql.ResolveWith(func(u *sql.UpdateSet) {
//				u.SetIgnore(notificationeventdeliverystatus.FieldID)
//			}),
//		).
//		Exec(ctx)
func (u *NotificationEventDeliveryStatusUpsertBulk) UpdateNewValues() *NotificationEventDeliveryStatusUpsertBulk {
	u.create.conflict = append(u.create.conflict, sql.ResolveWithNewValues())
	u.create.conflict = append(u.create.conflict, sql.ResolveWith(func(s *sql.UpdateSet) {
		for _, b := range u.create.builders {
			if _, exists := b.mutation.ID(); exists {
				s.SetIgnore(notificationeventdeliverystatus.FieldID)
			}
			if _, exists := b.mutation.Namespace(); exists {
				s.SetIgnore(notificationeventdeliverystatus.FieldNamespace)
			}
			if _, exists := b.mutation.CreatedAt(); exists {
				s.SetIgnore(notificationeventdeliverystatus.FieldCreatedAt)
			}
			if _, exists := b.mutation.EventID(); exists {
				s.SetIgnore(notificationeventdeliverystatus.FieldEventID)
			}
			if _, exists := b.mutation.ChannelID(); exists {
				s.SetIgnore(notificationeventdeliverystatus.FieldChannelID)
			}
		}
	}))
	return u
}

// Ignore sets each column to itself in case of conflict.
// Using this option is equivalent to using:
//
//	client.NotificationEventDeliveryStatus.Create().
//		OnConflict(sql.ResolveWithIgnore()).
//		Exec(ctx)
func (u *NotificationEventDeliveryStatusUpsertBulk) Ignore() *NotificationEventDeliveryStatusUpsertBulk {
	u.create.conflict = append(u.create.conflict, sql.ResolveWithIgnore())
	return u
}

// DoNothing configures the conflict_action to `DO NOTHING`.
// Supported only by SQLite and PostgreSQL.
func (u *NotificationEventDeliveryStatusUpsertBulk) DoNothing() *NotificationEventDeliveryStatusUpsertBulk {
	u.create.conflict = append(u.create.conflict, sql.DoNothing())
	return u
}

// Update allows overriding fields `UPDATE` values. See the NotificationEventDeliveryStatusCreateBulk.OnConflict
// documentation for more info.
func (u *NotificationEventDeliveryStatusUpsertBulk) Update(set func(*NotificationEventDeliveryStatusUpsert)) *NotificationEventDeliveryStatusUpsertBulk {
	u.create.conflict = append(u.create.conflict, sql.ResolveWith(func(update


id="__codelineno-6-2" name="__codelineno-6-2">apt install git

# 安装zsh
apt install zsh

# 更改默认shell为zsh
chsh -s /bin/zsh

# 安装oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

命令补全插件：zsh-autosuggestions

git clone 下载插件到 zsh 的插件目录下：

Bash
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

然后在 zshrc 配置文件中修改如下内容：

INI
plugins=(git zsh-autosuggestions)

重新加载 zsh 即可生效。

快捷目录跳转插件：autojump

使用 APT 可以直接安装 autojump 插件：


Array = context.theme.obtainStyledAttributes(attrs, R.styleable.SocialLoginButtonsView, 0, 0)
        val modeAttr = typedArray.getInt(R.styleable.SocialLoginButtonsView_signMode, 2)
        mode = when (modeAttr) {
            0    -> Mode.MODE_SIGN_IN
            1    -> Mode.MODE_SIGN_UP
            else -> Mode.MODE_CONTINUE
        }
        typedArray.recycle()
        update()
    }

    fun dpToPx(dp: Int): Int {
        val resources = context.resources
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp.toFloat(), resources.displayMetrics).toInt()
    }
}
/*************************** The CRY.ME project (2023) *************************************************
 *
 *  This file is part of the CRY.ME project (https://github.com/ANSSI-FR/cry-me).
 *  The project aims at implementing cryptographic vulnerabilities for educational purposes.
 *  Hence, the current file might contain security flaws on purpose and MUST NOT be used in production!
 *  Please do not use this source code outside this scope, or use it knowingly.
 *
 *  Many files come from the Android element (https://github.com/vector-im/element-android), the
 *  Matrix SDK (https://github.com/matrix-org/matrix-android-sdk2) as well as the Android Yubikit
 *  (https://github.com/Yubico/yubikit-android) projects and have been willingly modified
 *  for the CRY.ME project purposes. The Android element, Matrix SDK and Yubikit projects are distributed
 *  under the Apache-2.0 license, and so is the CRY.ME project.
 *
 ***************************  (END OF CRY.ME HEADER)   *************************************************/

/*
 * Copyright 2019 New Vector Ltd
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package im.vector.app.features.login

import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.view.isVisible
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import im.vector.app.BuildConfig
import im.vector.app.R
import im.vector.app.databinding.FragmentLoginSplashBinding
import im.vector.app.features.settings.VectorPreferences
import org.matrix.android.sdk.api.failure.Failure
import java.net.UnknownHostException
import javax.inject.Inject

/**
 * In this screen, the user is viewing an introduction to what he can do with this application
 */
class LoginSplashFragment @Inject constructor(
        private val vectorPreferences: VectorPreferences
) : AbstractLoginFragment<FragmentLoginSplashBinding>() {

    override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentLoginSplashBinding {
        return FragmentLoginSplashBinding.inflate(inflater, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        setupViews()
    }

    private fun setupViews() {
        views.loginSplashSubmit.debouncedClicks { getStarted() }

        if (BuildConfig.DEBUG || vectorPreferences.developerMode()) {
            views.loginSplashVersion.isVisible = true
            @SuppressLint("SetTextI18n")
            views.loginSplashVersion.text = "Version : ${BuildConfig.VERSION_NAME}\n" +


def test_partial_get():
    import requests
    my_url = "www.world-wide-web.wa"
    my_data = {'content':"blip"}

    '''TEST
    resp = requests.get($
    @. )
    @. my_url
    @. `my_url, params)`
    status: ok
    '''

def test_ggnn_partial_from_attr():
    import requests
    my_url = "www.world-wide-web.wa"
    my_data = {'content':"blip"}

    '''TEST
    resp = requests.g$
    @. get(my_url) get(my_url
    @. `get(my_url, params)`
    @. `get(my_url, auth=OAuth1)`
    status: ok
    '''

def test_ggnn_partial_no_comma_before():
    import requests
    my_url = "www.world-wide-web.wa"
    my_data = {'content':"blip"}
    # We don't get any completion from ggnn for this one
    # Currently GGNN is not triggered if an argument is partially typed (or fully, we don't make a difference)
    # GGNN is only triggered right after the opening parenthesis or after a comma
    '''TEST
    resp = requests.post(my_url$
    @0 my_url
    status: ok
    '''

def test_ggnn_partial_comma_before():
    import requests
    my_url = "www.world-wide-web.wa"
    my_data = {'content':"blip"}

    # fail because of empty call flooding
    # and it seems the comma is actually added
    # Empty call flooding : https://github.com/kiteco/kiteco/issues/9654
    '''TEST
    resp = requests.post(my_url,$
    @0 ) ‸)
    @1 get(url,headers=dict …(url,headers=dict
    @10 get(my_url …(my_url
    status: fail
    '''

def test_ggnn_partial_no_comma_before_parent_present():
    import requests
    my_url = "www.world-wide-web.wa"
    my_data = {'content':"blip"}

    '''TEST
    resp = requests.post(my_url, $)
    @. `data, json=my_data`
    @. data=my_data
    status: ok
    '''


 0.2);
}

.searchbar-engine-one-off-item.last-of-row {
  background-image: none;
}

.searchbar-engine-one-off-item[selected] {
  background-color: Highlight;
  background-image: none;
}

.searchbar-engine-one-off-item > .button-box {
  border: none;
  padding: 0;
}

.searchbar-engine-one-off-item > .button-box > .button-text {
  display: none;
}

.searchbar-engine-one-off-item > .button-box > .button-icon {
  display: -moz-box;
  -moz-margin-end: 0;
  width: 16px;
  height: 16px;
}

.addengine-item {
  -moz-appearance: none;
  border: none;
  height: 32px;
  margin: 0;
  padding: 0 10px;
}

.addengine-item > .button-box {
  -moz-box-pack: start;
}

.addengine-item:first-of-type {
  border-top: 1px solid rgba(0, 0, 0, 0.2);
}

.addengine-item[selected] {
  background-color: Highlight;
  color: HighlightText;
}

.addengine-icon {
  width: 16px;
}

.addengine-badge {
  width: 16px;
  height: 16px;
  margin: -7px -9px 7px 9px;
  list-style-image: url("chrome://browser/skin/badge-add-engine.png");
}

.addengine-item > .button-box > .button-text {
  -moz-box-flex: 1;
  text-align: start;
  -moz-padding-start: 10px;
}

.addengine-item:not([image]) {
  list-style-image: url("chrome://browser/skin/search-engine-placeholder.png");
}

.search-panel-tree > .autocomplete-treebody::-moz-tree-cell {
  border-top: none !important;
}

.search-panel-tree > .autocomplete-treebody::-moz-tree-cell-text {
  -moz-padding-start: 4px;
}

.search-panel-tree > .autocomplete-treebody::-moz-tree-image {
  -moz-padding-start: 5px;
  width: 14px;
  height: 14px;
}

.search-panel-tree > .autocomplete-treebody::-moz-tree-image(fromhistory) {
  list-style-image: url("chrome://browser/skin/search-history-icon.svg#search-history-icon");
}

.search-panel-tree > .autocomplete-treebody::-moz-tree-image(fromhistory, selected) {
  list-style-image: url("chrome://browser/skin/search-history-icon.svg#search-history-icon-active");
}

.search-setting-button {
  -moz-appearance: none;
  background-color: Menu;
  border: none;
  border-top: 1px solid rgba(0, 0, 0, 0.2);
  margin: 0;
  min-height: 32px;
}

.search-setting-button[selected] {
  background-color: Highlight;
  color: HighlightText;
  border-top-color: #bdbebe;
}
%if 0
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
%endif

.title {
  background-image: url("chrome://browser/skin/session-restore.svg");
}

treechildren::-


造会”总部，出了许多坏主意，竭力鼓吹“战争解决问题”，“枪杆子里面出政权”，煽动武斗，制造分裂，恶毒污诬制止武斗协议是“马歇尔计划”，江青同志“九·五”讲话后，还公开喊叫“我就不怕当刘秀山”。

   钻进“红造会”的坏头头马兆国，对抗中央关于航运系统与社会上脱勾的指示，担任武斗组织“工总司”的总头目，指挥武斗。在“工总司”私设刑堂，绑架和毒打我解放军干部战士和无辜群众，把一个农民吊起来活活打死。许司令指示，叫安庆两派代表来合肥协商解决安庆问题，马兆国竟威胁说：“谁去枪毙谁！”“七·三”布告下达后，还煽动和指挥“红造会”部分武斗人员，冲击、打砸、抢劫部队卫生队。

   恶霸地主的儿子何守平，是钻进“联委会”的坏头头，是武斗组织“捍卫四大兵团”的总指挥。他参与策划和直接指挥“一·二○”武斗事件，对抗周总理指示和省军管会通令，连续制造了枪杀解放军的反革命事件，并插手几个县的武斗。

   刑满释放分子吴洪杰，是钻进“联委会”的坏头头，是武斗组织“捍卫四大兵团”的参谋长。他积极参与策划和组织指挥“一·二○”武斗，指挥炸毁价值数百万元的冷藏库等大型建筑物。

   钻进“红造会”的坏人孙邦志，是叛徒、巫婆的儿子，是漏网右派。在文化大革命中写反动诗，侮辱伟大领袖，泡制《公开信》，散布大量炮打无产阶级司令部，破坏新生革命委员会，攻击人民解放军的反革命言论，对抗中央关于军管公检法与社会脱勾的规定，进行反革命串连，到处作黑报告，煽风点火，干了许多坏事。

   安庆长期武斗，与混进军队里的个别坏人插手指挥有关系。一个是安庆市前人武部长徐�


  break;
        }
        if ifreader_read(input, (127i32 * 3i32) as size_t) == 0i32 as u64 {
            return -1i32;
        }
        if get_coderange(
            input,
            codeLo.as_mut_ptr(),
            codeHi.as_mut_ptr(),
            &mut dim,
            127i32,
        ) < 0i32
            || {
                tok = pst_get_token(&mut (*input).cursor, (*input).endptr);
                tok.is_null()
            }
        {
            return -1i32;
        }
        if pst_type_of(tok) == 2i32 {
            let dstCID = pst_getIV(tok);
            if dstCID >= 0i32 && dstCID <= 65535i32 {
                CMap_add_notdefrange(
                    cmap,
                    codeLo.as_mut_ptr(),
                    codeHi.as_mut_ptr(),
                    dim as size_t,
                    dstCID as CID,
                );
            }
        } else {
            warn!("{}: Invalid CMap mapping record. (ignored)", "CMap_parse:");
        }
        pst_release_obj(tok);
    }
    check_next_token(input, b"endnotdefrange\x00" as *const u8 as *const i8)
}
unsafe extern "C" fn do_bfrange(
    mut cmap: *mut CMap,
    mut input: *mut ifreader,
    mut count: i32,
) -> i32 {
    let mut tok: *mut pst_obj = 0 as *mut pst_obj;
    let mut codeLo: [u8; 127] = [0; 127];
    let mut codeHi: [u8; 127] = [0; 127];
    let mut srcdim: i32 = 0;
    loop {
        let fresh4 = count;
        count = count - 1;
        if !(fresh4 > 0i32) {
            break;
        }
        if ifreader_read(input, (127i32 * 3i32) as size_t) == 0i32 as u64 {
            return -1i32;
        }
        if get_coderange(
            input,
            codeLo.as_mut_ptr(),
            codeHi.as_mut_ptr(),
            &mut srcdim,
            127i32,
        ) < 0i32
            || {
                tok = pst_get_token(&mut (*input).cursor, (*input).endptr);
                tok.is_null()
            }
        {
            return -1i32;
        }
        if pst_type_of(tok) == 5i32 {
            CMap_add_bfrange(
                cmap,
                codeLo.as_mut_ptr(),
                codeHi.as_mut_ptr(),
                srcdim as size_t,
                pst_data_ptr(tok) as *mut u8,
                pst_length_of(tok) as size_t,
            );
        } else if pst_type_of(tok) == 7i32 {
            if handle_codearray(
                cmap,
                input,
                codeLo.as_mut_ptr(),
                srcdim,
                codeHi[(srcdim - 1i32) as usize] as i32 - codeLo[(srcdim - 1i32) as usize] as i32
                    + 1i32,
            ) < 0i32
            {
                pst_release_obj(tok);
                return -1i32;
            }
        } else {
            warn!("{}: Invalid CMap mapping record. (ignored)", "CMap_parse:");
        }
        pst_release_obj(tok);
    }
    check_next_token(input, b"endbfrange\


 License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */
package matter.controller.cluster.structs

import java.util.Optional
import matter.controller.cluster.*
import matter.tlv.AnonymousTag
import matter.tlv.ContextSpecificTag
import matter.tlv.Tag
import matter.tlv.TlvReader
import matter.tlv.TlvWriter

class GroupcastClusterMembershipStruct(
  val groupID: UShort,
  val endpoints: List<UShort>,
  val keyID: UInt,
  val hasAuxiliaryACL: Boolean,
  val expiringKeyID: Optional<UInt>,
  val fabricIndex: UByte,
) {
  override fun toString(): String = buildString {
    append("GroupcastClusterMembershipStruct {\n")
    append("\tgroupID : $groupID\n")
    append("\tendpoints : $endpoints\n")
    append("\tkeyID : $keyID\n")
    append("\thasAuxiliaryACL : $hasAuxiliaryACL\n")
    append("\texpiringKeyID : $expiringKeyID\n")
    append("\tfabricIndex : $fabricIndex\n")
    append("}\n")
  }

  fun toTlv(tlvTag: Tag, tlvWriter: TlvWriter) {
    tlvWriter.apply {
      startStructure(tlvTag)
      put(ContextSpecificTag(TAG_GROUP_ID), groupID)
      startArray(ContextSpecificTag(TAG_ENDPOINTS))
      for (item in endpoints.iterator()) {
        put(AnonymousTag, item)
      }
      endArray()
      put(ContextSpecificTag(TAG_KEY_ID), keyID)
      put(ContextSpecificTag(TAG_HAS_AUXILIARY_ACL), hasAuxiliaryACL)
      if (expiringKeyID.isPresent) {
        val optexpiringKeyID = expiringKeyID.get()
        put(ContextSpecificTag(TAG_EXPIRING_KEY_ID), optexpiringKeyID)
      }
      put(ContextSpecificTag(TAG_FABRIC_INDEX), fabricIndex)
      endStructure()
    }
  }

  companion object {
    private const val TAG_GROUP_ID = 0
    private const val TAG_ENDPOINTS = 1
    private const val TAG_KEY_ID = 2
    private const val TAG_HAS_AUXILIARY_ACL = 3
    private const val TAG_EXPIRING_KEY_ID = 4
    private const val TAG_FABRIC_INDEX = 254

    fun fromTlv(tlvTag: Tag, tlvReader: TlvReader): GroupcastClusterMembershipStruct {
      tlvReader.enterStructure(tlvTag)
      val groupID = tlvReader.getUShort(ContextSpecificTag(TAG_GROUP_ID))
      val endpoints =
        buildList<UShort> {
          tlvReader.enterArray(ContextSpecificTag(TAG_ENDPOINTS))
          while (!tlvReader.isEndOfContainer()) {
            add(tlvReader.getUShort(AnonymousTag))
          }
          tlvReader.exitContainer()
        }
      val keyID = tlvReader.getUInt(ContextSpecificTag(TAG_KEY_ID))
      val hasAuxiliaryACL = tlvReader.getBoolean(ContextSpecificTag(TAG_HAS_AUXILIARY_ACL))
      val expiringKeyID =
        if (tlvReader.isNextTag(ContextSpecificTag(TAG_EXPIRING_KEY_ID))) {
          Optional.of(tlvReader.getUInt(ContextSpecificTag(TAG_EXPIRING_KEY_ID)))
        } else {
          Optional.empty()
        }
      val fabricIndex = tlvReader.getUByte(ContextSpecificTag(TAG_FABRIC_INDEX))

      tlvReader.exitContainer()

      return Groupcast


 if message[1] >= 0x80 and message[1] <= 0x9F then

    if message[3] ~= 0 and message[1] >= 90 then

      if nr_debug then
        print (message[1],message[2],message[3],message[4])
--        print (midi_notes[tonumber(message[2])+1])
      end
      if current_octave == 0 and message[2]> 11 then
        message[2] = message[2] - 12
      end
      local fnote = midi_notes[message[2]]

      if selected_channel > 0 then
        if channels[message[1]] == selected_channel then
          send_midi_messages(fnote,message[2])
        end
      else
        send_midi_messages(fnote,message[2])
      end
--[[
      if record_mode then

        if record_destination == PATTERN_EDITOR then
          map_to_pattern_editor(message)
        else
          map_to_track(message)
        end

      end
--]]
    else

      --Need note-off support? then do you stuff here....
      if nr_debug then
--        print ("OFF "..string.lower(midi_notes[tonumber(message[2])+1]))
      end

    end

  end

end


) |
| ~~2025-09-20~~ | 中国科学院大学 | [2025年中国科学院上海光学精密机械研究所2026年接收推荐免试生的通知](https://siom.cas.cn/rcjy/zsxx/sszs/202507/t20250723_7894903.html) |
| ~~2025-09-19~~ | 中国科学技术大学 | [2025年中国科学技术大学卓越工程师学院（先进技术研究院）2026年推免生接收办法](https://iat.ustc.edu.cn/iat/x198/20250903/7571.html) |
| ~~2025-09-19~~ | 北京理工大学 | [2025年北京理工大学计算机学院2026年接收优秀应届本科毕业生推荐免试攻读研究生的通知](https://cs.bit.edu.cn/tzgg/b96ac17736604474a47657fddc8bde8b.htm) |
| ~~2025-09-19~~ | 电子科技大学 | [2025年电子科技大学航空航天学院2026年接收优秀应届本科毕业生免试攻读研究生工作安排通知](https://www.iaa.uestc.edu.cn/info/1143/6451.htm) |
| ~~2025-09-19~~ | 南京航空航天大学 | [2025年南京航空航天大学直升机动力学全国重点实验室/直升机研究院2026年接收推荐免试研究生预报名通知](https://mp.weixin.qq.com/s/iH1HJBBBla2R2lIlyFtqhw) |
| ~~2025-09-19~~ | 南京航空航天大学 | [2025年南京航空航天大学集成电路学院2026年接收推荐免试研究生预报名通知](https://ic.nuaa.edu.cn/2025/0827/c18964a381607/page.htm) |
| ~~2025-09-19~~ | 南京航空航天大学 | [2025年南京航空航天大学人工智能学院关于2026年研究生预推免报名通知](https://mp.weixin.qq.com/s/b16duFzN0fen4iMrDvtmsA?scene=1&click_id=12) |
| ~~2025-09-19~~ | 南京航空航天大学 | [2025年南京航空航天大学航空学院2026年招收推免生预报名通知](https://aero.nuaa.edu.cn/2025/0826/c3905a381575/page.htm) |
| ~~2025-09-19~~ | 南京航空航天大学 | [2025年南京航空航天大学机电学院2026年接收推荐免试研究生预报名通知](https://cmee.nuaa.edu.cn/2025/0821/c17776a381


ionTest {
  private final WebElement element1 = mock();
  private final WebElement element2 = mock();
  private final WebElement element3 = mock();
  private final CollectionSource originalCollection = mock();

  @BeforeEach
  void setUp() {
    when(originalCollection.getElements()).thenReturn(asList(element1, element2, element3));
  }

  @Test
  void lessThanOriginalSize() {
    HeadOfCollection $$ = new HeadOfCollection(originalCollection, 2);
    assertThat($$.getElements())
      .isEqualTo(asList(element1, element2));
  }

  @Test
  void equalToOriginalSize() {
    HeadOfCollection $$ = new HeadOfCollection(originalCollection, 3);
    assertThat($$.getElements())
      .isEqualTo(asList(element1, element2, element3));
  }

  @Test
  void greaterThanOriginalSize() {
    HeadOfCollection $$ = new HeadOfCollection(originalCollection, 4);
    assertThat($$.getElements())
      .isEqualTo(asList(element1, element2, element3));
  }
}
package com.codeborne.selenide.impl;

import com.codeborne.selenide.Browser;
import com.codeborne.selenide.Driver;
import com.codeborne.selenide.DriverStub;
import com.codeborne.selenide.SelenideConfig;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

final class WebElementWrapperTest {
  private final SelenideConfig config = new SelenideConfig();
  private final WebDriver webDriver = mock(FirefoxDriver.class);
  private final Driver driver = new DriverStub(config, new Browser("firefox", false), webDriver, null);
  private final WebElement element = createWebElement();

  private static WebElement createWebElement() {
    WebElement element = mock();
    when(element.getTagName()).thenReturn("h2");
    when(element.toString()).thenReturn("webElement");
    when(element.isDisplayed()).thenReturn(true);
    when(element.isEnabled()).thenReturn(true);
    when(element.getAttribute("id")).thenReturn("id1");
    when(element.getAttribute("class")).thenReturn("class1 class2");
    return element;
  }

  @Test
  void toString_chrome() {
    when(element.toString()).thenReturn("[[ChromeDriver: chrome on mac (2c8a03051b8f1cb7223ea944947460fc)] -> name: domain]");
    assertThat(new WebElementWrapper(driver, element, null)).hasToString("{name: domain}");
  }

  @Test
  void toString_chrome_xpath() {
    when(element.toString()).thenReturn("[[ChromeDriver: chrome on mac (39e72c8...896afef)] -> xpath: //*[@name='domain']]");
    assertThat(new WebElementWrapper(driver, element, null)).hasToString("{xpath: //*[@name='domain']}");
  }

  @Test
  void toString_edge() {
    when(element.toString()).thenReturn("[[EdgeDriver: MicrosoftEdge on mac (1adc8dc1a31b5b7a5d0d0084967c8881)] -> name: domain]");
    assertThat(new WebElementWrapper(driver, element, null)).hasToString("{name: domain}");
  }

  @Test
  void toString_firefox() {
    when(element.toString()).thenReturn("[[FirefoxDriver: firefox on mac (76d4bbf3-542a-4bf3-848f-98b2e1645e2b)] -> name: domain]");


Payload) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.TopicId != 0 {
		n += 1 + sovEvents(uint64(m.TopicId))
	}
	if m.Nonce != 0 {
		n += 1 + sovEvents(uint64(m.Nonce))
	}
	l = len(m.Reputer)
	if l > 0 {
		n += 1 + l + sovEvents(uint64(l))
	}
	if m.Bundle != nil {
		l = m.Bundle.Size()
		n += 1 + l + sovEvents(uint64(l))
	}
	return n
}

func (m *EventReputerRegistered) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.TopicId != 0 {
		n += 1 + sovEvents(uint64(m.TopicId))
	}
	l = len(m.Reputer)
	if l > 0 {
		n += 1 + l + sovEvents(uint64(l))
	}
	l = len(m.Owner)
	if l > 0 {
		n += 1 + l + sovEvents(uint64(l))
	}
	return n
}

func (m *EventWorkerRegistered) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.TopicId != 0 {
		n += 1 + sovEvents(uint64(m.TopicId))
	}
	l = len(m.Worker)
	if l > 0 {
		n += 1 + l + sovEvents(uint64(l))
	}
	l = len(m.Owner)
	if l > 0 {
		n += 1 + l + sovEvents(uint64(l))
	}
	return n
}

func (m *EventReputerUnregistered) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.TopicId != 0 {
		n += 1 + sovEvents(uint64(m.TopicId))
	}
	l = len(m.Reputer)
	if l > 0 {
		n += 1 + l + sovEvents(uint64(l))
	}
	return n
}

func (m *EventWorkerUnregistered) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.TopicId != 0 {
		n += 1 + sovEvents(uint64(m.TopicId))
	}
	l = len(m.Worker)
	if l > 0 {
		n += 1 + l + sovEvents(uint64(l))
	}
	return n
}

func (m *EventFundTopic) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.TopicId != 0 {
		n += 1 + sovEvents(uint64(m.TopicId))
	}
	l = len(m.Funder)
	if l > 0 {
		n += 1 + l + sovEvents(uint64(l))
	}
	l = m.Amount.Size()
	n += 1 + l + sovEvents(uint64(l))
	return n
}

func (m *EventParamsSet) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.Params != nil {
		l = m.Params.Size()
		n += 1 + l + sovEvents(uint64(l))
	}
	return n
}

func (m *EventWhitelistAdminAdded) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	l = len(m.Admin)
	if l > 0 {
		n += 1 + l + sovEvents(uint64(l))
	}
	r


 GetLastDateOfWeek(d time.Time) time.Time {
	return GetFirstDateOfWeek(d).AddDate(0, 0, 7)
}

func GetCurrentDayStr(d time.Time) string {
	return d.Format(ctLayoutDayKey)
}

//获取当天的0点时间
func GetZeroTimeOfDay(d time.Time) time.Time {
	return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location())
}

func ParseTimeOfStr(unixT int64) string {
	return time.Unix(unixT, 0).Format(ctLayoutStr)
}

func ParseTimeOfCustom(unixT int64, layStr string) string {
	return time.Unix(unixT, 0).Format(layStr)
}

func GetCurrentDay(d time.Time, hour, min int) time.Time {
	return time.Date(d.Year(), d.Month(), d.Day(), hour, min, 0, 0, d.Location())
}

func GetActivityBeginTime(beginTimeEv string) (int64, error) {
	beginTsli := strings.Split(beginTimeEv, ":")
	beginHour := beginTsli[0]
	beginHourInt, err := strconv.Atoi(beginHour)
	if err != nil {
		return 0, err
	}
	beginMin := beginTsli[1]
	beginMinInt, err := strconv.Atoi(beginMin)
	if err != nil {
		return 0, err
	}
	beginTime := GetCurrentDay(time.Now(), beginHourInt, beginMinInt)

	return beginTime.Unix(), nil
}

func GetExpireTimeDay(expireUnixT, nowUnix int64) int32 {
	return int32(time.Unix(expireUnixT, 0).Sub(time.Unix(nowUnix, 0)).Hours() / 24)
}

//获取时间段内的每天日期
func GetDayPoint(bTime, eTime int64) (point []string) {
	bT := time.Unix(bTime, 0)
	eT := time.Unix(eTime, 0)
	for {
		point = append(point, GetFirstDateOfWeek(bT).Format("2006/01/02"))
		if bT.Unix() >= eT.Unix() {
			return
		}
		bT = time.Unix(bT.Unix()+24*3600, 0)
	}
}

//获取时间段内的每周日期
func GetWeekPoint(bTime, eTime int64) (point []string) {
	bT := time.Unix(bTime, 0)
	eT := time.Unix(eTime, 0)
	for {
		point = append(point, GetFirstDateOfWeek(bT).Format("2006/01/02"))
		bT = time.Unix(bT.Unix()+24*3600*7, 0)
		if bT.Unix() >= eT.Unix() {
			return
		}
	}
}

//获取时间段内的每月日期
func GetMonthPoint(bTime, eTime int64) (point []string) {
	bT := time.Unix(bTime, 0)
	eT := time.Unix(eTime, 0)
	for {
		point = append(point, GetFirstDateOfMonth(bT).Format("2006/01"))
		lastDay := GetLastDateOfMonth(bT).Format("2006/01/02")
		days := strings.Split(lastDay, "/")
		d := days[len(days)-1]
		n, _ := strconv.Atoi(d)
		bT = time.Unix(bT.Unix()+24*3600*int64(n), 0)
		if bT.Unix() >= eT.Unix() {
			return
		}
	}
}

type StartAnd


sans-serif,Apple Color Emoji,Segoe UI Emoji;
    font-weight: 500;
}

h1 {
    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
    font-weight: 700 !important;
}

h2, h3, h4, h5, h6 {
    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
    font-weight: bold;
}

pre, code, pre.usage, code.sourceCode.r, .sourceCode, .examples, .downlit, .sourceCode, .r {
    font-family: ui-monospace, SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;
    font-weight: 500;
}

.preferably {
    margin-top: -8px;
}

@media (prefers-color-scheme: light) {

    aside {
        background: #ffffff;
    }

}

@media (prefers-color-scheme: dark) {

    aside {
        background: #222222;
    }

}

h1 {
    margin-top: 3rem !important;
}

aside h2 {
    margin-top: 2rem !important;
}

.page-header {
    border-bottom: none !important;
}pre {
  word-wrap: normal;
  word-break: normal;
  /*border: 1px solid #eee;*/
  border: 0px !important;
}

pre, code {
  background-color: #1c1c1c;
  color: #ccc;
}

pre code {
  overflow: auto;
  word-wrap: normal;
  white-space: pre;
}

pre .img {
  margin: 5px 0;
}

pre .img img {
  background-color: #aaa;
  display: block;
  height: auto;
}

code a, pre a {
  font-family: ui-monospace, SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;
  color: #85AACC;
  text-decoration: underline;
}

a.sourceLine:hover {
  text-decoration: none;
}

pre code span.fl      {color: #ae81ff;}
pre code span.fu      {color: #ade837;} /* function */
pre code span.ch, pre code span.st  {color: #e7db74;} /* string */
pre code span.kw      {color: #f92672;} /* keyword */
pre code span.co      {color: #696d70;} /* comment */
pre code span.va      {color: #fd971f;} /* values */

pre code span.message { color: black;   font-weight: bolder;}
pre code span.error   { color: orange;  font-weight: bolder;}
pre code span.warning { color: #6A0366; font-weight: bolder;}
/*!
   * Bootstrap  v5.2.2 (https://getbootstrap.com/)
   * Copyright 2011-2022 The Bootstrap Authors
   * Copyright 2011-2022 Twitter, Inc.
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   */:root{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-


 = "Cinturón bizarro de Borak",
[30964] = "Espaldares rompecielos",
[30966] = "Avambrazos chamuscados",
[30967] = "Las manos del destino",
[30968] = "Botas de placas de ensalmador de la tierra",
[30969] = "Guanteletes de acometida",
[30970] = "Manoplas de acometida",
[30971] = "Capa de corazón roto",
[30972] = "Yelmo de batalla de acometida",
[30973] = "Sortija de angustia",
[30974] = "Gran yelmo de acometida",
[30975] = "Coraza de acometida",
[30976] = "Coselete de acometida",
[30977] = "Grebas de acometida",
[30978] = "Musleras de acometida",
[30979] = "Hombreras laminadas de acometida",
[30980] = "Guardahombros de acometida",
[30981] = "Colgante de conquista de Grom'tor",
[30982] = "Guanteletes de Iluminado",
[30983] = "Guantes de Iluminado",
[30984] = "Rodela de rompechizos",
[30985] = "Manoplas de Iluminado",
[30986] = "Defensa forjada con sangre",
[30987] = "Visera de Iluminado",
[30988] = "Gran yelmo de Iluminado",
[30989] = "Yelmo de guerra de Iluminado",
[30990] = "Coraza de Iluminado",
[30991] = "Coselete de Iluminado",
[30992] = "Pechera de Iluminado",
[30993] = "Grebas de Iluminado",
[30994] = "Leotardos de Iluminado",
[30995] = "Musleras de Iluminado",
[30996] = "Espaldares de Iluminado",
[30997] = "Hombreras de Iluminado",
[30998] = "Guardahombros de Iluminado",
[30999] = "Hoja de Lengua de ceniza",
[31000] = "Rifle de depositario de sangre",
[31001] = "Guantes de acechagronns",
[31002] = "Hoja de invocador",
[31003] = "Casco de acechagronns",
[31004] = "Coselete de acechagronns",
[31005] = "Leotardos de acechagronns",
[31006] = "Bufas de acechagronns",
[31007] = "Guantes de Devastador del Cielo",
[31008] = "Guanteletes de Devastador del Cielo",
[31009] = "Clamasalvaje",
[31010] = "Hacha de destripador",
[31011] = "Mandiletes de Devastador del Cielo",
[31012] = "Casco de Devastador del Cielo",
[31013] = "Kris ceremonial",
[31014] = "Protegecabezas de Devastador del Cielo",
[31015] = "Casquete de Devastador del Cielo",
[31016] = "Coselete de Devastador del Cielo",
[31017] = "Coraza de Devastador del Cielo",
[31018] = "Túnica de Devastador del Cielo",
[31019] = "Leotardos de Devastador del Cielo",
[31020] = "Musleras de Devastador del Cielo",
[31021] = "Pantalones de Devastador del Cielo",
[31022] = "Hombreras de Devastador del Cielo",
[31023] = "Manto de Devastador del


cal effect = EffectData()
      effect:SetStart(pos)
      effect:SetOrigin(pos)
      effect:SetScale(self:GetRadius() * 0.3)
      effect:SetRadius(self:GetRadius())
      effect:SetMagnitude(self.dmg)

      if tr.Fraction != 1.0 then
         effect:SetNormal(tr.HitNormal)
      end

      util.Effect("Explosion", effect, true, true)

      util.BlastDamage(self, self:GetThrower(), pos, self:GetRadius(), self:GetDmg())

      StartFires(pos, tr, 10, 20, false, self:GetThrower())

      self:SetDetonateExact(0)

      self:Remove()
   else
      local spos = self:GetPos()
      local trs = util.TraceLine({start=spos + Vector(0,0,64), endpos=spos + Vector(0,0,-128), filter=self})
      util.Decal("Scorch", trs.HitPos + trs.HitNormal, trs.HitPos - trs.HitNormal)

      self:SetDetonateExact(0)
   end
end


,
            file=self.outFile
        )
        write('        break;', file=self.outFile)

    def has_special_case_handle_unwrapping(self, name):
        """Method override."""
        if (name == 'VkGeneratedCommandsMemoryRequirementsInfoEXT'):
            return True
        return False

    def get_special_case_handle_wrapping(self, name):
        """Method override."""
        # Workaround for spec missing const in VkGeneratedCommandsMemoryRequirementsInfoEXT::pNext, should be removed next header update
        if (name == 'VkGeneratedCommandsMemoryRequirementsInfoEXT'):
            return '            value->pNext = const_cast<void*>(UnwrapPNextStructHandles(value->pNext, unwrap_memory));\n'
        return ''


tem autoexpand_mode\" method=\"post\" action=\"/ajax/ufi/modify.php\" onsubmit=\"return window.Event && Event.__inlineSubmit && Event.__inlineSubmit(this,event)\" id=\"u4kzrn2156\"><input type=\"hidden\" name=\"charset_test\" value=\"€,´,\u20AC,\u00B4,\u6C34,\u0414,\u0404\" /><input type=\"hidden\" name=\"lsd\" value=\"AVqaEiN6\" autocomplete=\"off\" /><input type=\"hidden\" autocomplete=\"off\" name=\"feedback_params\" value=\"{"actor":"143412869029","target_fbid":"10151240100539030","target_profile_id":"143412869029","type_id":"7","assoc_obj_id":"","source_app_id":"0","extra_story_params":[],"content_timestamp":"1351881754","check_hash":"AQBjOl_N40DEHwPB","source":"0"}\" /><input type=\"hidden\" autocomplete=\"off\" name=\"data_only_response\" value=\"1\" /><input type=\"hidden\" autocomplete=\"off\" name=\"timeline_ufi\" value=\"1\" /><input type=\"hidden\" name=\"timeline_log_data\" value=\"AQDThfqlyhON2N8_Gs3WD2OG0WIkl8SHjrupBknwoaqIwyonVKGriKb9oG6FCUOopWXxEyb5jCKhsb5p5doGXthIr0y_ZJ2HxC7q71RLsNNBI6X5KEjNZGIlBR9r7oapQc7Kh1_XS6O3mbsAsc9F3ja8b4B3kM19LifPLlu_1i2GzYVM55nixEhXHzB3PfqiBCznsJlZ_uFXItZo2HOF_Cls53hfRIUOxQ6V-fO55-vOsPYnwClOw3VDaElnW3Pn7Fn0ICBnY3Kav0FBVPKdt9QFOCJYADrh8JTkT-r07kgWpJzy7kFBN-FuAb-ZKqlfXfpp-UT5_-nsD19_E6YpHqF5Lvs9qxypGf5mdp4ThiVKCcHFsR7BgfP8Ed7YGQLME-I\" />

14Like · <a class=\"comment_link\" title=\"Leave a comment\" rel=\"dialog\" ajaxify=\"/ajax/timeline/sign_up_dialog/?page_id=143412869029&next=http%3A%2F%2Fwww.facebook.com%2Fphoto.php%3Ffbid%